#include<bits/stdc++.h>
using namespace std;
const int mod=1000000007;
int d[105][105][105]={};
int dp(int N,int M,int K){
if(K>100 || M<0 || N<0) return 0;
if(d[N][M][K]!=-1) return d[N][M][K];
if(K%2){
int sum=dp(N,M-1,K+1)%mod;
d[N][M][K]=sum;
return sum;
}
int sum=dp(N-1,M,K/2)+dp(N,M-1,K+1);
d[N][M][K]=sum%mod;
return sum;
}
int main(){
for(int i=0;i<105;i++){
for(int t=0;t<105;t++){
for(int h=0;h<105;h++){
d[i][t][h]=-1;
}
}
}
for(int k=3;k<105;k++){
d[0][0][k]=0;
}
int N,M;
cin>>N>>M;
d[0][0][2]=1;
cout<<dp(N,M-1,1)%mod;
}
有大佬帮忙看一看吗,我觉得我写的没什么问题TAT