#include using namespace std; using ll = long long; using ull = unsigned long long; ull seed; int next() { seed = seed ^ (seed << 13); seed = seed ^ (seed >> 7); seed = seed ^ (seed << 17); return (seed >> 33); } int a[200010]; int main() { int n, q; cin >> n >> q >> seed; for (int i = 0; i < 10000; i++) next(); for (int i = 1; i <= n; i++) a[i] = next(); sort(a + 1, a + n + 1); ll sm = 0; ll del = 0; for (int i = 0; i < q; i++) { int x = next(); int y = (1ll * x * n) >> 31; while (y > 10 && a[y-10] >= x) y-=10; while (y + 10 < n && a[y+10] < x) y+=10; while (y > 0 && a[y] >= x) y--; while (y < n && a[y+1] < x) y++; sm ^= ll(y) * i; } cout << sm << endl; //cout << del << ' ' << q << ' ' << del / q << endl; return 0; }