#include <bits/stdc++.h>
using namespace std;
const long long mod = 7340033;
long long n, k;
long long DP[100][1009], dp[100][1009];
long long DFS(int h, int k);
long long dfs(int h, int k) {
  long long &d = dp[h][k];
  if (~d) return d;
  d = 0;
  for (int i = 0; i <= k; i++)
    d = (d + DFS(h - 1, i) * DFS(h - 1, k - i)) % mod;
  return d;
}
long long DFS(int h, int k) {
  long long &d = DP[h][k];
  if (~d) return d;
  if (h == 0) {
    if (k == 0) return d = 1;
    return d = 0;
  }
  if (k == 0) return 1;
  d = 0;
  for (int i = 0; i < k; i++) d = (d + dfs(h, i) * dfs(h, k - 1 - i)) % mod;
  return d;
}
void pre() {
  memset(dp, -1, sizeof(dp));
  memset(DP, -1, sizeof(DP));
  for (int i = 0; i <= 30; i++)
    for (int j = 0; j <= 1000; j++) DFS(i, j);
}
int main() {
  int w;
  cin >> w;
  pre();
  while (w--) {
    int n, k;
    cin >> n >> k;
    int cnt = 0;
    while (n > 1 && (n & 1)) cnt++, n >>= 1;
    cout << DFS(cnt, k) << endl;
  }
  return 0;
}
