#include #include #include #include #include #include using namespace std; typedef long long LL; map < pair, LL > mp; LL cuts(int a, int b) { if(mp.count({a, b})) return mp[{a, b}]; if(a > b) return cuts(b, a); if(a == 1 && b == 1) return 0; if(a == 1 && b == 2) return 1; mp[{a, b}] = (1LL + cuts(a, b / 2) + cuts(a, b - (b / 2))); return mp[{a, b}]; } int main() { int N, M; cin >> N >> M; cout << cuts(N, M); return 0; }