#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; mapdp; long cuts(int n,int m){ if(dp.find(n+"_"+m)!=dp.end())return dp[n+"_"+m]; if(n>=m){ if(n%2) dp[n+"_"+m]= cuts(n/2,m)+cuts(n/2+1,m); else dp[n+"_"+m] = 2*cuts(n/2,m); } else{ if(m%2) dp[n+"_"+m]= cuts(n,m/2)+cuts(n,m/2+1); else dp[n+"_"+m] = 2*cuts(n,m/2); } return dp[n+"_"+m]; } int main(){ int n; int m; cin >> n >> m; dp[1+"_"+1]=1; cout<