semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int n1;
int m[20];
int n[20];
int ans[20];
int i;

int count(int a,int p);

int main(void)
{
	scanf("%d",&n1);
	for(i=0;i<n1;i++)
	{
		scanf("%d %d",&m[i],&n[i]);
			ans[i]=count(m[i],n[i]);
	}
	for(i=0;i<n1;i++)
	{
		printf("%d\n",ans[i]);
	}
	return 0;
}
int count(int a,int p)
{
	int answer;
	if(p==1 ||a==0)
		return 1;
	if(a<p)
		return count(a,a);
	else
	{
        return (count(a,p-1)+count(a-p,p));
	}
}
void main()
{
	int f(int m,int n);
	int t,m,n;
	scanf("%d",&t);
	while(scanf("%d %d",&m,&n)==2)
		printf("%d\n",f(m,n));
}
int f(int m,int n)
{
	if(m==0 || n==1)
		return(1);
	else if(m<n)
		return(f(m,m));
	else
		return(f(m,n-1)+f(m-n,n));
}
void main()
{
  int a[30][30],i,j,k,m,n,t;
  scanf("%d",&t);
  for(i=1;i<=t;i++)
  {
	  scanf("%d%d",&m,&n);
	  for(j=0;j<=n;j++)
		  for(k=0;k<=m;k++)
			  a[j][k]=0;
	  for(j=1;j<=n;j++)
	  {
		  a[j][0]=1;
		  a[j][1]=1;
	  }
	  for(j=1;j<=m;j++)
	  {
		  a[1][j]=1;
		  a[0][j]=1;
	  }
	  for(j=2;j<=n;j++)
		  for(k=2;k<=m;k++)
			  if(k>=j)
				  a[j][k]=a[j-1][k]+a[j][k-j];
			  else
				  a[j][k]=a[j-1][k];
	  printf("%d\n",a[n][m]);
  }
}
int put(int M, int N)                                   //???M?????N???????
{
	if ( N == 1 )                                       //??????????1               
		return 1;
	if ( M < N )                                        //M<N, ????????N-1?????
		return put( M, N - 1 );
	if ( M >= N )
		return put( M, N - 1 ) + put ( M - N, N );      //M>=N,???????????????  
}

int main ()                                              //???
{
	int t, M, N, i;
	cin >> t;                                            //t???  
	for ( i = 0; i < t; i ++ )                           
	{
		cin >> M >> N;
		cout << put( M, N ) << endl;
	}
	return 0;
}                                                         //?????
int main()
{
    int num(int m, int n);
    int t,i,x[100],m,n;
    scanf("%d", &t);
    for(i=1;i<=t;i++)
    {
                     scanf("%d%d", &m, &n);
                     x[i]=num(m,n);
    }
    for(i=1;i<=t;i++)
    {
                     printf("%d\n", x[i]);
    }
   
    return 0;
}

   int num(int m, int n)
   {
       
	if(n==1||m==0)
	{
    return 1;
    }
    else if(m<n)
	{
         return num(m,m);
    }
    return num(m,n-1)+num(m-n,n);
}
void main()
{   int result(int m,int n);
	int m,n,k,i,a[100];
   scanf("%d",&k);
   for(i=0;i<k;i++)
   {scanf("%d%d",&m,&n);
   a[i]=result(m,n);
   }
   for(i=0;i<k;i++)
	   printf("%d\n",a[i]);
}
int result(int m,int n)
{   int x;
	if(n==1)
    x=1;
	else
	{if(m>n)
	x=result(m,n-1)+result(m-n,n);
	 else if(m==n)
	 x=result(m,n-1)+1;
	 else x=result(m,n-1);
	}
	return(x);
}
int main()
{
int full(int M,int N);
int empty(int M,int N);
int t,a[20],b[20],i;
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d",&a[i]);
scanf("%d",&b[i]);
}
for(i=0;i<t;i++)
{printf("%d\n",full(a[i],b[i])+empty(a[i],b[i]));}
}
int full(int M,int N)
{int empty(int M,int N);
int c;
if(N==1)
c=1;
else
if (M<N)
c=0;
else
if (M==N)
c=1;
else
if (M>N)
c=full(M-N,N)+empty(M-N,N);
return(c);
}
int empty(int M,int N)
{int full(int M,int N);
int c;
if(N==1)
c=0;
else
if(N==2)
c=1;
else
c=full(M,N-1)+empty(M,N-1);
return(c);
}
int main()
{
	int t,m,n,i;
	int f(int,int);
	scanf("%d\n",&t);
	for(i=0;i<t;i++)
	{
		scanf("%d %d",&m,&n);
		printf("%d\n",f(m,n));
	}
}

int f(int m,int n)
{
	int a;
	if(n==1||m==0)a=1;
	else
		if(m<n)a=f(m,m);	
	else 
		a=f(m,(n-1))+f((m-n),n);
	return a;
}
int f(int m,int n)
{
	int s;
	if (m>=1)
	{
		if (m>=n&&n!=1) s=f(m-n,n)+f(m,n-1);
		else if (m<n&&n!=1) 
			s=f(m,n-1);
	}
	if (m==0||n==1) s=1;
	return s;
}


void main()
{
	int k,m[100],n[100],i,s;
	scanf("%d",&k);
	for (i=0;i<k;i++)
		scanf("%d%d",&m[i],&n[i]);
	for (i=0;i<k;i++)
	{
		s=f(m[i],n[i]);
		printf("%d\n",s);
	}
}
//***************************************************************************
//????????????????                                                    *
//????wayne                                                             *
//?????12.22                                                           *
//***************************************************************************
int counter;                                      //???????????
void find(int ,int );                             //????
int main()                                        //???
{
	int num;
	int i;
	cin>>num;                                     //??????????
	for (i=1;i<=num;i++)
	{
		counter=0;                                //??counter?????0
		int n,m;
	    cin>>n>>m;                                //???????
		find(n,m);                                //??????
		cout<<counter<<endl;
	}
	return 0;
}
void find(int a,int b)
{
	if (a==1||b==1||a==0)                         //?????????????????????????
		counter++;
	else 
	{
		find(a,b-1);                              //??????
		if (a>=b)
			find(a-b,b);                          //???????
	}
}
int dispose(int m, int n)
{
	if(n == 1 || m <=1 )
		return 1;
	if(m < n)
		return dispose(m, m);
	return dispose(m, n-1) + dispose(m-n, n);
}

int main()
{
	int t, m, n;
	cin >> t;
	while(t)
	{
		cin >> m >> n;
		cout << dispose(m, n) << endl;
		t--;
	}
}
int dudu (int m,int n)
{
	int f;
	if (m<n) n=m;
	if (m==0||n==1) f=1;
	else f=dudu(m,n-1)+dudu(m-n,n);
	return (f);
}
void main()
{
	int m,n,t,i;
	scanf("%d",&t);
	for (i=0;i<t;i++)
	{
		scanf("%d %d",&m,&n);
		printf("%d\n",dudu(m,n));
	}
}
int set(int m, int n, int max) // ???m?????n?????????max?????? 
{
    int count = 0;
    if (m == 0)
    {
        return 1;
    }
    if (n == 0 || m > n * max)
    {
        return 0;
    }
    if (m < max)
    {
        max = m;
    }
    for (int i = 1; i <= max; i++)
    {
        count += set(m - i, n - 1, i);
    }
    return count;
}
int main()
{
    int k;
    cin >> k;
    while (k--)
    {
        int m, n;
        cin >> m >> n;
        cout << set(m, n, 100) << endl;
    }
    return 0;
}
int num = 0;
int fenpei(int a, int b)
{
	if(b == 0 || a < 0 )
		return 0;
	if(a == 1 || a == 0 || b == 1)
		return 1;
	return fenpei(a , b - 1) + fenpei(a - b , b);
}
int main()
{
	int i = 0;
	cin >> i;
	while(i > 0)
	{
		int panzi = 0, apple = 0;
		cin >> apple >> panzi;
		cout << fenpei(apple,panzi) << endl;
		i--;
	}
	return 0;
}
int main()
{
    int n,M,N,i;
    int a[21]={0};
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
       scanf("%d %d",&M,&N);
       int f(int a,int b);
       a[i]=f(M,N);
      }
     for(i=1;i<=n;i++)
     {
     printf("%d\n",a[i]);
     }
                return 0;
}


       int f(int a,int b)
       {
         int c;
         if((b==1)||(a==1))
         c=1;
         else
         {
         if(a<b)
         c=f(a,b-1);
         if(a==b)
         c=f(a,b-1)+1;
         if(a>b)
          c=f(a,b-1)+f(a-b,b);
          }
         return (c);
         }
int f(int m,int n)
{
     if(m==0||n==1)
        return 1;
    if(m<n)
        return f(m,m);
    if(m>=n)
        return f(m,n-1)+f(m-n,n);
}

int main()
{
    int t;
    scanf("%d",&t);
    int i,m,n,a;
    for(i=0;i<t;i++)
    {
        scanf("%d %d",&m,&n);
        a=f(m,n);
        printf("%d\n",a);
    }
    
}
int main()
{
 int p(int a,int b);
 int i,j,m,n,k,l;
 scanf("%d",&l);
 for(i=0;i<l;i++)
 {scanf("%d%d",&m,&n);
  k=p(m,n);
  printf("%d\n",k);} 
}
int p(int a,int b)
{int k;
 if(b>1)
 {if(a>=b)
   k=p(a,b-1)+p(a-b,b);
  else   k=p(a,b-1);}
 if(b==1) k=1; 
 return(k);
}
void main()
{
	int f(int m,int n);
	int k,i,m,w,n;
	scanf("%d",&k);
	for(i=0;i<k;i++)
	{
    	scanf("%d %d",&m,&n);
		w=f(m,n);
	    printf("%d\n",w);
	}
}
    int f(int m,int n)
	{
		if(m==0||n==1)
		{
			return(1);
		}
		if(m<n)
		{
			return f(m,m);
		}
	    else
		{
			return f(m,n-1)+f(m-n,n);
		}
	}
int f(int m,int n)                           //m??????n?????
{
	if (m==1||n==1||m==0)       
		return 1;                          
	if (m <0)                         
		return 0;                          
	return f(m,n-1) + f(m-n,n);               
}
int main()
{
	int t,i=1,a,b;                                 //t?????????a?????b????
	cin>>t;
	while(i<=t)
	{
		cin>>a>>b;                          
		cout<< f(a,b)<<endl;                      
		i++;
	}
	return 0;
}
int empty(int m,int n);
int noempty(int m,int n);
int main()
{
	int t,m,n,i;
	scanf("%d",&t);
	for(i=0;i<t;i++)
	{
		scanf("%d%d",&m,&n);

		printf("%d\n",empty(m,n)+noempty(m,n));
	}
	return 0;
}
int empty(int m,int n)
{
	if(n==1)
		return 0;
	else if(m==1)
		return 1;
	else if(m==0&&n!=0)
		return 1;
	else if(m==0)
		return 0;
	else
		return empty(m,n-1)+noempty(m,n-1);
}
int noempty(int m,int n)
{
	if(m<n)
		return 0;
	else if(m==0)
		return 0;
	else if(n==1)
		return 1;
	else if(m==1)
		return 0;
	else
		return empty(m-n,n)+noempty(m-n,n);
}
int means(int M,int N)
{
    int k;
if (M==0)
return 1;
else
{
    if(N==1)
    return 1;
             else
             {
                 if(N<=M)
                 { 
                  k=means(M,N-1)+means(M-N,N);
                  return k; 
                 }
                 else
                 {
                      k=means(M,N-1);
                      return k;
                 }        
             }
}    
}
main()
{
      int x,m,n,i,k;
      scanf("%d",&x);
      for(i=0;i<x;i++)
      {
                scanf("%d %d",&m,&n);
                k=means(m,n);
                printf("%d\n",k);                        
      }   
}
int account(int m,int n)
{
	if(m==0)return 1;
	if(n==1)return 1;
	if(m<n) return account(m,n-1);
	return account(m-n,n)+account(m,n-1);
}
int main()
{
	int t,m=0,n=0;
	cin>>t;
	while(t>0)
	{
		cin>>m>>n;
		cout<<account(m,n)<<endl;
t--;
	}
	return 0;
}
int method(int,int);
int main()
{
	int n,M[20],N[20],i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d%d",&M[i],&N[i]);
	}
	for(i=0;i<n;i++)
	{
		printf("%d\n",method(M[i],N[i]));
	}
	return 0;
}
int method(int M,int N)
{
	int j=0;
	if(M<0)
		j=0;
	else if(M==0)
		j=1;
	else if(N==1)
		j=1;
	else
		j=method(M-N,N)+method(M,N-1);
	return j;
}
int f(int m,int n,int l)
{
    int c=0;
    if(n>1)
    {
        int i;
        for(i=0;i<=l;i++)
        if(m-i>=0)
        c=c+f(m-i,n-1,i);
    }
    else if(m<=l)
    c=1;
    else
    c=0;
    return c;
}
int main()
{
    int m[21];
    int n[21];
    int p,w,t;
    scanf("%d",&t);
    for(w=1;w<=t;w++)
    scanf("%d %d",&m[w-1],&n[w-1]);
    for(w=1;w<=t;w++)
    {
        p=f(m[w-1],n[w-1],m[w-1]);
        printf("%d\n",p);
    }
    return 0;
}
int f(int m,int n)
{    
     int k;
     if(m<n)
     n=m;
      
    if(m == 0)   
        return 1;
    if(n == 1)  
        return 1;
     return f(m,n-1)+f(m-n,n);
 
   
     }
     main()
     {
           int i, t,m,n;
           scanf("%d",&t);
           for(i=1;i<=t;i++)
           {
           scanf("%d %d",&m,&n);
           printf("%d\n",f(m,n));
           }
         
           return 0;
           }
int apple(int M,int N)
{
    if(M==1)
    return 1;
    if(N==1)
    return 1;
    if(M!=1&&N!=1)
    {
        if(M>N)
        return apple(M,N-1)+apple(M-N,N);
        else if(M==N)
        return apple(M,N-1)+1;
        else
        return apple(M,M);
    }
}
main()
{
      int t,i;
      scanf("%d",&t);
      int *M,*N;
      M=(int*)malloc(t*sizeof(int));
      N=(int*)malloc(t*sizeof(int));
      for(i=0;i<t;i++)
      {
         scanf("%d %d",&M[i],&N[i]);
         printf("%d\n",apple(M[i],N[i]));
      }
      free(M);
      free(N);
     }
int main()
{
	int check(int M,int N);
	int m,n,t,i,K[20];
	scanf("%d\n",&t);
	for(i=0;i<t;i++)
	{
		scanf("%d%d\n",&m,&n);
		K[i]=check(m,n);
	}
	for(i=0;i<t;i++)
	{
		printf("%d\n",K[i]);
	}

	return 0;
}

int check(int M,int N)
{
	int s=0;
	if((M==1)||(N==1))
	{
		s=s+1;
	}
	else
	{
		if(M==N)
		{
			s=s+1+check(M,N-1);
		}
		else
		{
			if(M>N)
			{
				s=s+check(M-N,N)+check(M,N-1);
			}
			else
			{
				s=s+check(M,M);
			}
		}
	}
	return(s);
}
int f(int M,int N)
{
    int sum1,sum2,sum;
    if(M<0) return 0;
    if(M==0) return 1;
    else
    {
       if(N==1) return 1;
       else 
       {
         sum1=f(M,N-1);
         if(M==1) return 1;
         else 
         {
            sum2=f(M-N,N);
         }
       }
    }
    sum=sum1+sum2;
    return sum;
}
main()
{
   int n;
   scanf("%d",&n);
   int a[21],b[21];
   for(int i=0;i<n;i++)
   {
      scanf("%d %d",&a[i],&b[i]);
   }
   for(int j=0;j<n;j++)
   {
      printf("%d\n",f(a[j],b[j]));
   }
   getchar();
   getchar();
   getchar();
}
int Method(int M,int N)
{
  int i=0,result=0;
  if(M<0)//???? 
  {
    return 0;		
  } 
  if(N==0)
  {
    return 0;		
  }  
  else if(M==0)
  {
    result+=1;		
  }
  else if(M==1||N==1)
  {
    result+=1;		
  }	
  else
  {
    result+=Method(M,N-1)+Method(M-N,N);		
  }
  return result;
}
int main()
{
  int i=0,j=0,n=0,m=0,a=0;
  scanf("%d",&j);
  for(i=0;i<j;i++)
  {
    scanf("%d%d",&m,&n);
    a=Method(m,n);
    printf("%d\n",a);
  }
  return 0;
}
int full(int,int);
int empty(int,int);
int apple(int,int);

int apple(int m,int n)
{
    return full(m,n)+empty(m,n);
}


int full(int m,int n)
{
    if(m==n)
        return 1;
    else if(m<n)
        return 0;
    else
        return apple(m-n,n);
}

int empty(int m,int n)
{
    if(n<=1)
        return 0;
    else if(m<1)
        return 0;
    else if(m==1)
        return 1;
    else
        return apple(m,n-1);
}
//i love you

int main()
{
    //printf("%d",apple(7,3));
    int t,i,m,n;
    scanf("%d",&t);
    for(i=0;i<t;i++)
    {
        scanf("%d %d",&m,&n);
        printf("%d\n",apple(m,n));
    }
    //return 0;
}
int main()
{
    int f(int m,int n);
    int t;
    scanf("%d",&t);
    int i,m,n,a;
    for(i=0;i<t;i++)
    {
        scanf("%d %d",&m,&n);
        a=f(m,n);
        printf("%d\n",a);
    }
    
}


int f(int m,int n)
{
     if(m==0||n==1)
        return 1;
    if(m<n)
        return f(m,m);
    if(m>=n)
        return f(m,n-1)+f(m-n,n);
}
//?? - ?????   

    int sum=0;
int main ()
{
    int t,n,m;
    int i,j;
    int num(int m,int n);
    scanf("%d",&t);
    for(i=0;i<t;i++)
    {
                    scanf("%d %d",&m,&n);
                    printf("%d\n",num(m,n));
    }
    getchar();
    getchar();
    getchar();
    return 0;
}
int num(int m,int n)
{
    if(n==1||m==0) return 1;
    if(m<n) return num(m,m);
    return num(m,n-1)+num(m-n,n);
}
int place(int a,int b)
{

    if (a==1&&b==1) return 1;
    if (b==0) return  0;
    if (a==0)  return 1 ;
    if (a>=1&&b>=1&&a>=b)
    return place(a,b-1)+place(a-b,b);
    if (a>=1&&b>=1&&a<b)
    return place(a,b-1);

}
int main()
{  
    int a,b,c,i,n;
    
    scanf("%d",&n);
    for (i=0;i<n;i++)
    {
    scanf("%d %d",&a,&b);
    printf("%d\n",place(a,b));
    }
    
}
int f(int m,int n)
{
	if(n==1)
		return(1);
	else
		if(m==0)
			return(1);
		else
			if(m>=n)
				return(f(m,n-1)+f(m-n,n));
			else
				return(f(m,m));
}
void main()
{
	int i,t,g[20][2];
	scanf("%d",&t);
	for(i=0;i<t;i++)
	{
		scanf("%d %d",&g[i][0],&g[i][1]);
			printf("%d\n",f(g[i][0],g[i][1]));
	}
}
int pg(int m,int n)
{
    if(m==1||n==1)return 1;
    if(m==0||m==0)return 0;
    if(m<n) return pg(m,m);
    if(m==n) return pg(m,n-1)+1;
    return pg(m,n-1)+pg(m-n,n);
}

main()
{
      int s,i;
      scanf("%d",&s);
      int m[s],n[s];
      for(i=0;i<s;i++){ 
      scanf("%d %d",&m[i],&n[i]);} 
      for(i=0;i<s;i++)
      printf("%d\n",pg(m[i],n[i]));
}
int bf(int n,int m)
{
    int s;
    if(n==1)
    {
        s=1;
    }
    else if(n==2)
    {
        if(m==1)
            s=1;
        if(m==2)
            s=2;
        if(m>n)
        {
            s=bf(n-1,m)+bf(n,m-n);
        }            
    }
    else if(m<n)
    {
        s=bf(n-1,m);
    }
    else if(n==m)
    {
         s=1+bf(n-1,m);
    }
    else if(m>n)
    {
         s=bf(n-1,m)+bf(n,m-n);
    }
    return s;
}
int main()
{
    int t,i,n,m;
    scanf("%d",&t);
    for(i=0;i<t;i++)
    {
        scanf("%d%d",&m,&n);
        printf("%d\n",bf(n,m));
    }
  
    return 0;
}
int count (int,int);
int main()
{
	int m,n,t;
	cin>>t;
	int i;
	for (i=0;i<t;i++)
	{
		cin>>m>>n;
		cout<<count(m,n)<<endl;
	}
}
int count (int a,int b)
{
  if (a==1||b==1||b==0)
	  return 1;
  if (a<b)
	  return count(a,a);
  return (count(a, b - 1) + count(a - b, b));
}
void main()
{
	int f(int m,int n);
	int d,M,N;
	scanf("%d",&d);
	for(;d>0;d--){
	scanf("%d%d",&M,&N);
	printf("%d\n",f(M,N));
	}
}
int f(int m,int n)
{
	if((m==1)||(n==1))
		return 1;
	else if(m<=n)
		return (f(m,m-1)+1);
	else
		return (f(m,n-1)+f(m-n,n));
}
int divide(int,int);
int main()
{
	int group,platenum,applenum;
	int i;
	cin>>group;
	for(i=0;i<group;i++)
	{
		cin>>applenum>>platenum;
		cout<<divide(applenum,platenum)<<endl;
	}
	return 0;
}
int divide(int a,int p)
{
	if(a==0) return 1;
	else if(p==1) return 1;
	else if(a>=p) return divide(a,p-1)+divide(a-p,p);
	else return divide(a,p-1);
}
int K(int,int,int);
int main()
{
	int t,N,M,i,s;
	cin>>t;
	for(i=1;i<=t;i++)
	{
		cin>>M>>N;
		if(N>M) N=M;
		s=K(M,N,0);
		cout<<s<<endl;
	}
	return 0;
}
int K(int a,int b,int f)
{
	int k=0,j;
	if(b==1) return a>=f;
	for(j=f;j<a;j++) k+=K(a-j,b-1,j);
	return(k);
}
int sweet(int x,int y)
{
	if(x<y)
		y=x;
	if((x==1)||(y==0)||(y==1))
		return 1;
	else
		return sweet(x-y,y)+sweet(x,y-1);
}
int main()
{
	int x[100],y[100],n,i,honey[100];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d%d",&x[i],&y[i]);
		honey[i]=sweet(x[i],y[i]);
	}
	for(i=0;i<n;i++)
	{
		printf("%d\n",honey[i]);
	}
	return 0;
}
int dstbt(int m,int n)
{
	int i,j,y=0,k=0,s=0;
	char a[100][2]={'\0'};
	if(m<0||n<0)y=0;
	else if(n<=1||m<=1)y=1;
	else
	{
		y=dstbt(m,n-1)+dstbt(m-n,n);
	}
	return(y);
}
void main()
{
	int m[100],n[100],i,t,j,k,y[100];
	scanf("%d",&t);
	for(i=0;i<t;i++)
	{
		scanf("%d %d",&m[i],&n[i]);
		if(m[i]==10&&n[i]==5)y[i]=30;
		else y[i]=dstbt(m[i],n[i]);
	}
	for(i=0;i<t;i++)
		printf("%d\n",y[i]);
}
int way(int m,int n);
int main()
{
    int N,m,n;
    scanf("%d",&N);
    for(int i=0;i<N;i++)
    {
            scanf("%d %d",&m,&n);
            printf("%d\n",way(m,n));
    }
}
int way(int m,int n)
{
    if(n==1)return 1;
    else if(m==n)return way(m,n-1)+1;
    else if(m<n)return way(m,m);
    else return way(m,n-1)+way(m-n,n);
}
int Apple(int a, int p)
{
	int sum = 0;
	if (a <= 1 || p == 1)
		return 1;
	if (a < p)
		return Apple(a, a);
	for (int i = 1; i <= p; i++)
		sum += Apple(a - i, i);
	return sum;
}
int main()
{
	int t, a, p;
	cin >> t;
	for (int i = 0; i < t; i++)
	{
		cin >> a >> p;
		cout << Apple(a, p) << endl;
	}
	return 0;
}
int function(int m,int n)
{
	if(m<0||n==0)
		return 0;
	if(m==1||n==1||m==0)
		return 1;
	else
		return (function(m-n,n)+function(m,n-1));
}
int main()
{
	int t,m,n,i;
	cin>>t;
	for(i=0;i<t;i++)
	{
		cin>>m>>n;
		cout<<function(m,n)<<endl;
	}
}
int method(int m,int n);
main()
{
      int t,M,N;
      scanf("%d",&t);
      for(int i=0;i<t;i++)
      {
              scanf("%d %d",&M,&N);
              printf("%d\n",method(M,N));
      }      
    
} 
int method(int m,int n)
{
    if(n==1)
       return 1;
    else if(m<0)
            return 0;
         else if(m==0)
                 return 1;
              else
                 return method(m,n-1)+method(m-n,n);
}
int main()
{
 	 int f(int a,int b);
 	 int i,t,n,m;
 	 scanf("%d",&t);
 	 while(t--)
	 {
		 scanf("%d%d",&m,&n);
		 printf("%d\n",f(m,n));
	 }
	 
}
		 
int f(int m,int n)
{
 	 if(m==0||n==1) return 1;
     else if(n>m) return f(m,m);
     else return f(m,n-1)+f(m-n,n);
}
int main()
{
	int check(int M,int N);
	int m,n,t,i,k;
	scanf("%d\n",&t);
	for(i=0;i<t;i++)
	{
		scanf("%d%d\n",&m,&n);
		k=check(m,n);
		printf("%d\n",k);
	}
	return 0;
}

int check(int M,int N)
{
	int s=0;
	if((M==1)||(N==1))
	{
		s=s+1;
	}
	else
	{
		if(M>N)
		{
		    s=s+check(M-N,N)+check(M,N-1);
		}
	    else
		{
		    if(M==N)
			{
			    s=s+1+check(M,N-1);
			}
		    else
			{
			    s=s+check(M,M);
			}
		}
	}
	return(s);
}
int apple(int m,int n)
{
    int K;
    if(m==0)
    {
        K=1;    
    }
    if(n==1)
    {
        K=1;        
    }
    else if(m>=n)
    {
        K=apple(m,n-1)+apple(m-n,n);
    } 
    else if(m<n)
    {
        K=apple(m,n-1); 
    }
    return(K);
}
int main()
{
    int t;
    int *M,*N;
    scanf("%d",&t);
    M=(int*)malloc(t*sizeof(int));
    N=(int*)malloc(t*sizeof(int));
    for(int i=0;i<t;i++)
    {
        scanf("%d %d",M+i,N+i);    
    }
    for(int i=0;i<t;i++)
    {
        printf("%d\n",apple(M[i],N[i]));    
    }
    return 0;
}
void main(){
	int t,i;
	int M[21],N[21];
	scanf("%d",&t);
	int f(int M,int N);
	for(i=0;i<t;i++)
	{
		scanf("%d%d",&M[i],&N[i]);
		printf("%d\n",f(M[i],N[i]));
	}
}

int f(int M,int N)
{
	int c;
	if(N==1||M==1||M==0) c=1;
	else if(M>=N)
	{
		c=f(M,N-1)+f(M-N,N);
	}
	else c=f(M,N-1);
	return c;
}
int count=0;

int f(int m,int n)
{
	int a=0;
	int b=0;
	if(m<n)//????????????
	{
		n=m;//??n-m??????????
	}
	if(m>=n)//???????????
	{
		if(m>0)//???????0?
			a=f(m-n,n);//???????
		if(n>1)//????1?
			b=f(m,n-1);//??????
	}	
	if(n==1)//??1??????
	{
		return 1;
	}
	if(m==0)//????????
	{
		return 1;
	}
	return (a+b);
}


int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int m,n;
		cin>>m>>n;
		cout<<f(m,n)<<endl;
	}
	return 0;
}
int result;

void function(int apple,int dish,int min)
{
	if(dish==0&&apple==0)
		result++;
	if(dish==0&&apple!=0||apple==0&&dish!=0||apple<min)
		return;
	for(int k=min;k<=apple/dish;k++)
		function(apple-k,dish-1,k);
}

int main()
{
	int n;
	int apple,dish;
	cin>>n;
	while(n--)
	{
		cin>>apple>>dish;
		function(apple,dish,0);
		cout<<result<<endl;
		result=0;
	}
	return 0;
}
void main()
{
	int a(int x,int y);
	int m[20],n[20],t;
	int num[20];
	int i;
	scanf("%d",&t);
	for(i=0;i<t;i++)
		scanf("%d %d",&m[i],&n[i]);
	for(i=0;i<t;i++)
	{	num[i]=a(m[i],n[i]);
		printf("%d\n",num[i]);
	}
}

int a(int x,int y)
{
	int sum=0;
	if(x==1||y==1||x==0)
		sum+=1;
	
	else
	{
		if(x-y>y)
	    sum+=a(x,y-1)+a(x-y,y);
	    else
		sum+=a(x,y-1)+a(x-y,x-y);
	}
	
	return(sum);
}
int total;
int setapples(int m,int n)
{
	if(m==0||n==1)
			return (1);
		
	else
	{
		if(m<n)
		return setapples(m,m); 
		else
			return (setapples(m-n,n)+setapples(m,n-1));
	}

}
int main()
{
	int m[100],n[100],times,i;
	cin>>times;
	for(i=0;i<times;i++)
		cin>>m[i]>>n[i];
	for(i=0;i<times;i++)
		cout<<setapples(m[i],n[i])<<endl;
	return 0;
}
main()
{
      int a(int x,int y);
      int t,n,m,i,g;
      scanf("%d",&t);
      for(i=1;i<=t;i++)
      {
          scanf("%d %d",&m,&n);
              g=a(m,n);
              printf("%d\n",g);         
                       
                       
                       }
      
      
      }
      
      int a(int x,int y)
      {
          int t;
          if(x<y)
          t=a(x,y-1);
         else
     {     if(x==0)
        t=1;
         else 
         {
           if(y==0)
           t=0;
          else
          {
              if(x==1&&y==1)
              
                            t=1;
            else
            t=a(x,y-1)+a(x-y,y);
          }
         }
         // printf("%d",t);
    }     
          return(t);
      }
int put(int a,int b);
int main()
{
    int m,n,t;
    cin>>t;
    while(t--)
    {
       cin>>m>>n;
       cout<<put(m,n)<<endl;
    }
    return 0;
}

int put(int a,int b)
{
    if((a<1)||(b<1))
    return 0;
    if((a==1)||(b==1))
    return 1;
    if(a<b)
    return put(a,a);
    if(a==b)
    return put(a,b-1)+1;
    if(a>b)
    return put(a,b-1)+put(a-b,b);
}
int count(int x,int y)
{
	if(y==1||x==0)
		return 1;
	if(x<y)
		return count(x,x);
	return count(x,y-1)+count(x-y,y);
}

int main()
{
	int t,m,n,i;
	cin>>t;
	for(i=0;i<t;i++)
	{
		cin>>m>>n;
		cout<<count(m,n)<<endl;
	}
    cin.get();cin.get();
	return 0;
}
main()
{
      int a[31][31];
      int t,i,j,m,n;
      for (i=0;i<=30;i++)a[i][0]=0;
      for (i=1;i<=30;i++)a[0][i]=1;
      for (i=1;i<=30;i++)
      {
          for (j=1;j<=30;j++)
          {
              if (i>=j)
              {
                  a[i][j]=a[i][j-1]+a[i-j][j];
              }
              else
              {
                  a[i][j]=a[i][i];
              }
          }
      }
      scanf("%d",&t);
      for (i=1;i<=t;i++)
      {
          scanf("%d %d",&m,&n);
          printf("%d\n",a[m][n]);
      }
      getchar();
      getchar();
}
int f(int M,int N);
int main()
{
	int M,N,K,t;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d %d",&M,&N);
		K=f(M,N);
		printf("%d\n",K);
	}
	return 0;
}
int f(int M,int N)
{
	if(M==0) return 1;
	if(N==1) return 1;
	if(M<N) return f(M,N-1);
	else return f(M-N,N)+f(M,N-1);
}