#define __USE_MINGW_ANSI_STDIO 0 #include using namespace std; using ll = long long; // #define int ll using VI = vector; using VVI = vector; using PII = pair; #define FOR(i, a, n) for (ll i = (ll)a; i < (ll)n; ++i) #define REP(i, n) FOR(i, 0, n) #define ALL(x) x.begin(), x.end() #define PB push_back const ll LLINF = (1LL<<60); const int INF = (1LL<<30); const int MOD = 1000000007; template T &chmin(T &a, const T &b) { return a = min(a, b); } template T &chmax(T &a, const T &b) { return a = max(a, b); } template bool IN(T a, T b, T x) { return a<=x&&x T ceil(T a, T b) { return a/b + !!(a%b); } template ostream &operator <<(ostream& out,const pair& a){ out<<'('< ostream &operator <<(ostream& out,const vector& a){ out<<'['; REP(i, a.size()) {out<> 7); seed = seed ^ (seed << 17); return (seed >> 33); } signed main(void) { cin.tie(0); ios::sync_with_stdio(false); int n, q; cin >> n >> q >> seed; for (int i = 0; i < 10000; i++) next(); vector a(n), x(q); for (int i = 0; i < n; i++) a[i] = next(); REP(i, q) x[i] = next(); sort(ALL(a)); ll ret = 0; FOR(i, 1, q) { ll itr = lower_bound(ALL(a), x[i]) - a.begin(); ret ^= itr*i; } cout << ret << endl; return 0; // // cout << a << endl; // cout << "a" << endl; // // map mp; // VI cnt(n+q+5); // aa.PB(-1); sort(ALL(aa)); // cout << "d" << endl; // // cout << aa << endl; // REP(i, n) { // a[i] = lower_bound(ALL(aa), a[i]) - aa.begin(); // // cout << i << " " << a[i] << " " << aaa[i] << endl; // mp[aaa[i]] = a[i]; // cnt[a[i]]++; // } // cout << "c" << endl; // REP(i, q) { // mp[x[i]] = lower_bound(ALL(aa), x[i]) - aa.begin(); // } // // cout << "b" << endl; // // cout << a << endl; // // FOR(i, 1, n+q) cnt[i] += cnt[i-1]; // cout << cnt << endl; // // ll ret = 0; // REP(i, q) { // // xより小さいものの個数を求める // ret ^= ll(cnt[mp[x[i]]-1])*i; // // cout << i << " " << ret << endl; // } // cout << ret << endl; // // return 0; }