#include <iostream> #include <cstring> #include <queue> using namespace std; const int N=2e5+2; #define int long long int n,m,f1[50][2000] ,f2[50][2000]; void sov(){ memset(f1,0,sizeof f1);memset(f2,0,sizeof f2); f1[0][0]=f2[1][0]=1; int i,j; for(i=1;i<=n;i++){ int len =(i+1)/2*2-1; f1[i][0]=f1[i-1][0] ; for(j=1;j<=m&&j<=len;j++) f1[i][j]=f1[i-1][j]+(len-j+1)*f1[i-1][j-1]; } for(i=2;i<=n;i++){ int len =i/2*2 ; f2[i][0]=f2[i-1][0]; for(j=1;j<=m&&j<=len;j++) f2[i][j]=f2[i-1][j]+(len-j+1)*f2[i-1][j-1]; } int ans=0; for(i=0;i<=m;i++) ans+=f1[n][i]*f2[n][m-i]; cout<<ans<<endl; } signed main(){ while(cin>>n>>m,n||m) sov(); }