/*#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=110;
const int mod=1e9+7;
ll f[N][N][N];
int n,m;
int res;
ll dfs(int a,int b,int p){
if(a<0||b<0||p<0||p<0||p>m)return 0;//所有不合法情况
if(f[a][b][p]!=-1)
return f[a][b][p];
//f[a][b][p]=1;
f[a][b][p]=(dfs(a-1,b,p*2)+dfs(a,b-1,p-1))%mod;
return f[a][b][p];
}
int main(){
cin>>n>>m;
memset(f,-1,sizeof f);
f[0][1][1]=1;//由于最后一次是花
cout<<dfs(n,m,2)%mod;
//cout<<f[n][m][2];
return 0;
}*/
//暴力;
#include<bits/stdc++.h>
using namespace std;
int n,m;
int res;
void dfs(int u,int a,int b,int p){
if(p<0)return ;
if(u==m+n-1){
if(p==1&&a==n&&b==m-1)res++;
return ;
}
if(a>n||b>=m)return;
dfs(u+1,a+1,b,p*2);
dfs(u+1,a,b+1,p-1);
}
int main(){
cin>>n>>m;
dfs(0,0,0,2);
cout<<res<<endl;
return 0;
}bla