#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); } const int size = 1LL<<19; constexpr auto width = INT_MAX/size + !!(INT_MAX%size); VI v[size+5]; int cnt[size+5]; 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); REP(i, n) a[i] = next(); REP(i, q) x[i] = next(); // cout << size << " " << width << endl; REP(i, n) { v[a[i]/width].PB(a[i]); // cout << a[i] << "," << a[i]/width << endl; } cnt[0] = v[0].size(); FOR(i, 1, size+5) cnt[i] = cnt[i-1] + v[i].size(); ll ret = 0; REP(i, q) { int tmp = x[i]/width; int val = tmp!=0?cnt[tmp-1]:0; for(int j: v[tmp]) if(j < x[i]) val++; ret ^= val*i; } cout << ret << endl; return 0; }