void solve(){
int N, M; cin >> N >> M; N++; M++;
vector<int> f(N), g(M);
rep(i, 0, N) cin >> f[i];
rep(i, 0, M) cin >> g[i];
int sz = 1;
while(sz < N+M) sz <<= 1;
vector<mint> A1(sz), A2(sz);
rep(i, 0, N) A1[i] = f[i];
rep(i, 0, M) A2[i] = g[i];
FFT::ntt(A1);
FFT::ntt(A2);
rep(i, 0, sz) A1[i] *= A2[i];
FFT::ntt(A1, true);
vector<mint2> B1(sz), B2(sz);
rep(i, 0, N) B1[i] = f[i];
rep(i, 0, M) B2[i] = g[i];
FFT::ntt(B1);
FFT::ntt(B2);
rep(i, 0, sz) B1[i] *= B2[i];
FFT::ntt(B1, true);
ll ans = 0;
rep(i, 0, N+M-1){
ll r1 = A1[i].val, r2 = B1[i].val;
auto [x, m] = EGCD::CRT(MOD, r1, MOD2, r2);
ans ^= x;
}
cout << ans;
}