func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1010, L = 33, B = 7340033, root = 3;   int dp[L][N << 2];   int mypw(int x, int k) {     int ret = 1;     while (k) {       if (k & 1) ret = 1ll * ret * x % B;       k >>= 1;       x = 1ll * x * x % B;     }     return ret;   }   void change(int y[], int l) {     for (int i = 1, j = l / 2; i < l - 1; ++i) {       if (i < j) swap(y[i], y[j]);       int k = l / 2;       while (j >= k) {         j -= k;         k >>= 1;       }       if (j < k) j += k;     }   }   void fft(int y[], int l, int on) {     change(y, l);     for (int h = 2; h <= l; h <<= 1) {       int wn = mypw(root, (B - 1) / h);       if (on == -1) wn = mypw(wn, B - 2);       for (int j = 0; j < l; j += h) {         int w = 1;         for (int k = j; k < j + h / 2; ++k) {           int u = y[k];           int t = 1ll * y[k + h / 2] * w % B;           y[k] = u + t;           if (y[k] >= B) y[k] -= B;           y[k + h / 2] = u + B - t;           if (y[k + h / 2] >= B) y[k + h / 2] -= B;           w = 1ll * w * wn % B;         }       }     }     if (on == -1) {       int inv = mypw(l, B - 2);       for (int i = 0; i < l; ++i) {         y[i] = 1ll * y[i] * inv % B;       }     }   }   void calc(int a[], int b[], int l) {     l *= 2;     for (int i = 0; i < l; ++i) {       if (i < l / 2)         a[i] = b[i];       else         a[i] = 0;     }     fft(a, l, 1);     for (int i = 0; i < l; ++i) a[i] = 1ll * a[i] * a[i] % B;     fft(a, l, -1);   }   void init() {     dp[0][0] = 1;     for (int i = 1; i < L; ++i) {       calc(dp[i], dp[i - 1], 1 << 10);       calc(dp[i], dp[i], 1 << 10);       for (int j = (1 << 10) - 1; j > 0; --j) {         dp[i][j] = dp[i][j - 1];       }       dp[i][0] = 1;     }   }   int main() {     int q;     init();     scanf( %d , &q);     while (q--) {       int n, k;       scanf( %d%d , &n, &k);       int cnt = 0;       while (n > 1 && (n & 1)) {         ++cnt;         n >>= 1;       }       printf( %d n , dp[cnt][k]);     }     return 0;   }   