using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); public static void Main() { Solve(); } static void Solve() { var c = NList; var (n, q) = (c[0], c[1]); seed = (ulong)c[2]; for (var i = 0; i < 10000; ++i) Next(); var size = 1 << 20; var dic = new List[size]; var sum = new int[size]; for (var i = 0; i < size; ++i) dic[i] = new List(); for (var i = 0; i < n; ++i) { var a = Next(); var idx = a >> 11; dic[idx].Add(a); } for (var i = 1; i < size; ++i) sum[i] = sum[i - 1] + dic[i - 1].Count; var ans = 0L; for (var i = 0; i < q; ++i) { var sub = 0L; var x = Next(); var idx = x >> 11; sub += sum[idx]; foreach (var ni in dic[idx]) if (ni < x) ++sub; ans = ans ^ sub * i; } WriteLine(ans); } static ulong seed; static int Next() { seed = seed ^ (seed << 13); seed = seed ^ (seed >> 7); seed = seed ^ (seed << 17); return (int)(seed >> 33); } }