#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();
}