#include <bits/stdc++.h>
using namespace std;
void read(int &x) {
  x = 0;
  int f = 1;
  char ch = getchar();
  for (; !isdigit(ch); ch = getchar())
    if (ch == '-') f = -f;
  for (; isdigit(ch); ch = getchar()) x = x * 10 + ch - '0';
  x *= f;
}
void print(int x) {
  if (x < 0) putchar('-'), x = -x;
  if (!x) return;
  print(x / 10), putchar(x % 10 + 48);
}
void write(int x) {
  if (!x)
    putchar('0');
  else
    print(x);
  putchar('\n');
}
const int maxn = 1e6 + 10;
const int inf = 1e9;
const double eps = 1e-8;
const int mod = 7340033;
int f[32][1003], g[1003];
int main() {
  f[0][0] = 1;
  for (int x = 1; x <= 30; x++) {
    for (int i = 0; i <= 1000; i++) g[i] = f[x - 1][i];
    for (int _ = 1; _ <= 2; _++)
      for (int i = 1000; i; i--) {
        g[i] = 2ll * g[i] % mod;
        for (int j = 1; j < i; j++)
          g[i] = (g[i] + 1ll * g[j] * g[i - j] % mod) % mod;
      }
    for (int i = 1; i <= 1000; i++) f[x][i] = g[i - 1];
    f[x][0] = 1;
  }
  int q;
  read(q);
  while (q--) {
    int n, k;
    read(n), read(k);
    int c = 0;
    while (n > 1 && (n & 1)) n >>= 1, c++;
    write(f[c][k]);
  }
  return 0;
}
