#include using namespace std; #define int long long #define db double #define gcd(a,b) __gcd(a,b) #define lcm(a,b) a*b / __gcd(a,b) #define I first #define II second #define pb push_back #define ii pair const int INF = 2 * 1e18; const int N = 3e5 + 1; const int MOD = 1e9 + 7; int n, k; void solve() { cin >> n >> k; if (n == 1 || k == 0) cout << 0 << '\n'; else if (n % 2 == 0) cout << n * k << '\n'; else { int cnt = 0; for (int i = 30; i >= 0; i--) if ((k >> i) & 1) { cnt++; if (cnt == 1) continue; int x = k; x ^= (1 << i); for (int j = i - 1; j >= 0; j--) if (!((x >> j) & 1)) x ^= (1 << j); int y = k ^ x; // cout << x << ' ' << y << '\n'; cout << k * (n - 2) + x + y << '\n'; return ; } cout << (n - 1) * k << '\n'; } } int32_t main() { #define TASKNAME "test" ios_base::sync_with_stdio(0); cin.tie(0); if (fopen(TASKNAME ".inp","r" )) { freopen(TASKNAME ".inp","r",stdin); freopen(TASKNAME ".out","w",stdout); } int t = 1; // cin >> t; while (t--) solve(); return 0; }