#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define MOD 666013 #define MAXN 1000050 int T, K; long long P, X; long long A[MAXN]; char line[MAXN]; tr1::unordered_set S; int main() { // freopen("date.in", "r", stdin); // freopen("date.out","w", stdout); scanf("%d %d\n", &T, &K); P = 1; for(int i = 0; i < K + 1; i++) P = P * 2 % MOD; X = 1; for(int i = 0; i < K; i++) X = X * 2 % MOD; A[0] = 0; int per = -1; for(int i = 1; i <= 1000000; i++) { A[i] = (A[i - 1] * P + X) % MOD; if(S.count(A[i]) == 1) { per = i; break; } S.insert(A[i]); } per--; for(int i = 0; i < T; i++) { fgets(line, sizeof(line), stdin); long long val = 0; for(int j = 0; line[j] != '\0' && line[j] != '\n'; j++) { val = (10 * val + line[j] - '0') % per; } printf("%d\n", (int)A[val]); } return 0; }