#include using namespace std; const int MOD = 100003; unsigned xor128_x = 123456789, xor128_y = 362436069, xor128_z = 521288629, xor128_w = 88675123; unsigned xor128() { unsigned t = xor128_x ^ (xor128_x << 11); xor128_x = xor128_y; xor128_y = xor128_z; xor128_z = xor128_w; return xor128_w = xor128_w ^ (xor128_w >> 19) ^ (t ^ (t >> 8)); } void generateA(int N, int A[]) { for (int i = 0; i < N; ++i) A[i] = xor128() % MOD; } long long mod_pow(long long a, long long b, long long mod) { long long result = 1; a %= mod; while (b > 0) { if (b % 2 == 1) result = (result * a) % mod; a = (a * a) % mod; b /= 2; } return result; } int main() { ios::sync_with_stdio(false); cin.tie(0); int N, Q; cin >> N >> Q; int* A = new int[N]; generateA(N, A); vector exist(MOD, false); for (int i = 0; i < N; ++i) { exist[A[i]] = true; } delete[] A; while (Q--) { int q; cin >> q; if (q == 0) { cout << 0 << '\n'; continue; } int inv_q = mod_pow(q, MOD - 2, MOD); int max_x = -1; for (int x = MOD - 1; x >= 0; --x) { int a = (1LL * x * inv_q) % MOD; if (a < 0) a += MOD; if (exist[a]) { max_x = x; break; } } cout << max_x << '\n'; } return 0; }