#include<iostream>
#include<vector>;
#include<algorithm>
#include<iterator>
#include<cstring>
using namespace std;
vector<int> v;
int a[110][110][110];
void show(){
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));cout<<endl;
}
int fun(int m,int n,int min)//最小>=min
{
if(m<=0||n<=0){
if(m==0&&n==0){
return 1;
}
return 0;
}
if(min*n>m)return 0;
if(a[m][n][min])return a[m][n][min];
if(!a[m-min][n-1][min])
a[m-min][n-1][min]=fun(m-min,n-1,min);
if(!a[m][n][min+1])
a[m][n][min+1]=fun(m,n,min+1);
return a[m][n][min]=a[m-min][n-1][min]+a[m][n][min+1];
}
int main()
{
memset(a,0,sizeof(a));
int n;cin>>n;
while(n--){
int a,b;cin>>a>>b;
cout<<fun(a,b,1)<<endl;
}
}