#include<bits/stdc++.h>
using namespace std;
using LL = long long;
using ULL = unsigned long long;
#define rep(i,n) for(int i=0; i<(n); i++)

const ULL Z = 100003;

int N, Q;
bool C[Z];
vector<ULL> A;

ULL I[Z];

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() {
	for (int i = 0; i < N; ++i)
		C[xor128() % Z] = true;
}

int main() {
	cin >> N >> Q;
	generateA();
	N = 0; rep(i, Z) if (C[i]) N++;
	rep(i, Z) if (C[i]) A.push_back(i);

	I[1] = 1;
	for (ULL i = 2; i < Z; i++) I[i] = Z - Z / i * I[Z % i] % Z;

	while (Q--) {
		ULL q; cin >> q;
		if (q == 0) { cout << 0 << endl; continue; }

		if (N < 300) {
			ULL ans = 0;
			for (ULL a : A) ans = max(ans, a * q % Z);
			cout << ans << endl;
		}
		else {
			ULL ans = Z - 1;
			while (!C[I[q] * ans % Z]) ans--;
			cout << ans << endl;
		}
	}

    return 0;
}