//#pragma GCC optimize("Ofast") //#pragma GCC optimize("unroll-loops") #include using namespace std; using ll = long long; void solve(){ ll N, M; cin >> N >> M; if(!(N & 1)){ cout << M * N << "\n"; return; } ll cnt = 0; ll ans = 0; for(int i = 32; i >= 0; --i){ if((M >> i) & 1){ ++cnt; ans += (N - 1) << i; }else{ ans += ((cnt / 2) * 2) << i; } cnt = min(cnt, N); } cout << ans << "\n"; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cout << setprecision(10) << fixed; int T; T = 1; //cin >> T; for(;T--;) solve(); }