ull z;
ull R(){ z^=z<<13; z^=z>>7; z^=z<<17; return z>>33; }

unsigned int N,Q,A[2d5+1],C[(1<<20)+1]={};

unsigned int query(unsigned int x){
	unsigned int p=C[x>>11];
	while(A[p]<x) p++;
	return p;
}

{
	rd(N,Q,z);
	REP(1d4) R();
	A[0..N-1]=R(); A[N]=~0u;
	sort(A,A+N);
	C[(A[0..N-1]>>11)+1]++;
	rep(i,1<<20) C[i+1]+=C[i];
	ull ans=0;
	rep(i,Q) ans^=(ull)query(R())*i;
	wt(ans);
}