//全部用long
#include<stdio.h>
long fun(int n,int m)
{
long long int a,b,ans=1;
a=n-m+1;
b=1;
while(a<=n&&b<=m)
{
ans=ans*a/b;
a++;
b++;
}
return ans;
}
int main()
{
long long int m,n,ans;
while(scanf("%lld%lld",&n,&m),m||n)
{
ans=fun(n+m-1,m);
printf("%lld\n",ans);
}
return 0;
}
//输入1 0,应输出0,而实际输出1,但一看题,说正整数
这个问题叫做:可重复组合数,与求方程x1+x2+x3+…+xm=n的非负整数解的组数是一类问题,方法有多种,结论有两种一种是递推的,一种是组合数,我只说下组合数的结论吧:C(n+m-1,m)