#include #include #include #include #include #include #include #include #include #include #include #define MOD 1e9 + 7 #define eps 1e-9 #define pb push_back #define mp make_pair #define ft first #define sd second #define sz(a) a.size() #define loop(i, n) for(long long (i) = 0; (i) < (n) ; ++ (i)) #define loopn() #define pii pair #define pll pair #define vii vector #define vll vector typedef long long ll; typedef long double ld; using namespace std; /*@Sergey_Miller*/ ll f(ll n, ll m) { if(n == 1) { return m-1; } if(m == 1) { return n-1; } if(n < m) { swap(n,m); } ll ans = n; if(m%2 == 0) { return 1 + 2*f(n,m/2); } else { return 1 + f(n,m/2) + f(n,m/2 +1); } } void solve() { ll n,m; cin >> n >> m; cout << f(n,m); } int main () { ios::sync_with_stdio(false); // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); solve(); return 0; }