#include <bits/stdc++.h>
using namespace std;
void Get(int &T) {
  char C;
  bool F = 0;
  for (; C = getchar(), C < '0' || C > '9';)
    if (C == '-') F = 1;
  for (T = C - '0'; C = getchar(), C >= '0' && C <= '9'; T = T * 10 + C - '0')
    ;
  F && (T = -T);
}
int N, K;
int M;
long long B[105][10005];
long long C[10005];
int Log2(int X) {
  int Ans = 0;
  if (X >> 16) {
    X >>= 16, Ans |= 16;
  }
  if (X >> 8) {
    X >>= 8, Ans |= 8;
  }
  if (X >> 4) {
    X >>= 4, Ans |= 4;
  }
  if (X >> 2) {
    X >>= 2, Ans |= 2;
  }
  if (X >> 1) {
    X >>= 1, Ans |= 1;
  }
  return Ans;
}
long long E[100005];
int Order[100005];
long long Pow(long long X, long long Y) {
  long long Ans = 1;
  for (; Y; Y >>= 1) {
    if (Y & 1) (Ans *= X) %= (7340033ll);
    (X *= X) %= (7340033ll);
  }
  return Ans;
}
void FFT(long long *A, long long *B, int K = 0) {
  for (int k = 0; k < N; k++) B[k] = A[Order[k]];
  for (int k = 1, L = 2; k <= M; k++, L <<= 1) {
    for (int i = 0; i < N; i += L) {
      for (int j = 0; j < (L >> 1); j++) {
        long long X = B[i + j], Y = B[i + j + (L >> 1)], E0 = E[N / L * j];
        if (K) E0 = E[N - (N / L) * j];
        (Y *= E0) %= (7340033ll);
        (B[i + j] = X + Y) %= (7340033ll);
        (B[i + j + (L >> 1)] = X - Y) %= (7340033ll);
        if (B[i + j + (L >> 1)] < 0) B[i + j + (L >> 1)] += (7340033ll);
      }
    }
  }
  if (K)
    for (int k = 0; k < N; k++)
      (B[k] *= Pow(N, (7340033ll) - 2)) %= (7340033ll);
}
void Init() {
  N = 8000;
  M = Log2(N - 1) + 1;
  N = 1 << M;
  long long Eps = Pow(2187, (1 << 20) / N);
  E[0] = 1;
  for (int i = 0; i < N; i++) {
    (E[i + 1] = E[i] * Eps) %= (7340033ll);
    for (int k = 0; k < M; k++) Order[i] |= ((i >> k) & 1) << (M - k - 1);
  }
  B[0][0] = 1;
  for (int k = 1; k <= 40; k++) {
    FFT(B[k - 1], C);
    for (int i = 0; i < N; i++) {
      (C[i] *= C[i]) %= (7340033ll);
      (C[i] *= C[i]) %= (7340033ll);
      (C[i] *= E[i]) %= (7340033ll);
      (C[i] += 1) %= (7340033ll);
    }
    FFT(C, B[k], 1);
    for (int i = 0; i < N; i++) {
      B[k][i] %= (7340033ll);
      if (B[k][i] < 0) B[k][i] += (7340033ll);
    }
    for (int i = 1005; i < N; i++) B[k][i] = 0;
  }
}
void Work() {
  Get(M);
  for (int k = 1; k <= M; k++) {
    Get(N);
    Get(K);
    int Cnt = 0;
    for (; N > 1 && N & 1; N >>= 1) Cnt++;
    printf("%I64d\n", B[Cnt][K]);
  }
}
int main() {
  Init();
  Work();
  return 0;
}
