#include <bits/stdc++.h>
using namespace std;

using u32 = unsigned int;

const int N = 5e7;

int n;
u32 seed, a[N];

inline u32 input(u32 x) {
	x ^= x << 13;
    x ^= x >> 17;
    x ^= x << 5;
    return x;
}

void output() {
    u32 re = n;
    u32 x = 23333333;
    for (u32 i = 0; i < n; i++) {
        re = re ^ (a[i] + x);
        x ^= x << 13;
        x ^= x >> 17;
        x ^= x << 5;
    }
    cout << re << '\n';
}

void solve() {
	cin >> n >> seed;
	for (int i = 0; i < n; i++) {
		seed = input(seed);
		a[i] = seed;
	}
	sort(a, a + n);
	output();
}

int main() {
    solve();
    return 0;
}