/*
用等差数列公式推导
*/

#include 
<iostream>
#include 
<cmath>
using namespace std;

int main()
{
    
int cas, cnt, number;
    
int sum, n;
    
int neck;
    
    scanf(
"%d"&cas);
    
    
while (cas--)
    {
        cnt 
= -1;
        scanf(
"%d %d"&number, &sum);
        
        neck 
= (int)sqrt(sum+0.001* 2;
        
        
for (n = 1; n <= neck; n++)
        {
            
if ((sum * 2% n == 0
                
&& sum * 2 / n + 1 - n > 0
                
&& (sum * 2 / n + 1 - n) % 2 == 0
                )
                cnt
++;
        }   
        printf(
"%d %d\n", number, cnt);
    }
    
return 0;
}