func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 21, mod = 998244353;   long long f[32][N][N][N][N][2][2], ans, lim;   int n, m, x[7], y[7], pa, pb, pc, pd;   int main() {     scanf( %d%d , &n, &m), ******* f = 1, lim = (1 << n) - 1;     for (int i = 1, ie = n; i <= ie; i++)       scanf( %d%d , &x[i], &y[i]), pa += max(x[i], 0), pb -= min(x[i], 0),           pc += max(y[i], 0), pd -= min(y[i], 0);     for (int i = 0, ie = 30; i <= ie; i++)       for (int j = 0, je = lim; j <= je; j++) {         int la = 0, lb = 0, lc = 0, ld = 0, f1, f2, fl = (m >> i) & 1;         for (int li = 1, lie = n; li <= lie; li++)           if (j & (1 << li - 1))             la += max(x[li], 0), lb -= min(x[li], 0), lc += max(y[li], 0),                 ld -= min(y[li], 0);         for (int li = 0, lie = pa; li <= lie; li++)           for (int lj = 0, lje = pb; lj <= lje; lj++)             for (int ii = 0, iie = pc; ii <= iie; ii++)               for (int jj = 0, jje = pd; jj <= jje; jj++)                 for (int g1 = 0, g1e = 1; g1 <= g1e; g1++)                   for (int g2 = 0, g2e = 1; g2 <= g2e; g2++)                     if (!((li + lj + la + lb) & 1) && !((ii + jj + lc + ld) & 1))                       f1 = g1 + (li + la & 1) > fl, f2 = g2 + (ii + lc & 1) > fl,                       (f[i + 1][li + la >> 1][lj + lb >> 1][ii + lc >> 1]                         [jj + ld >> 1][f1][f2] += f[i][li][lj][ii][jj][g1][g2]) %=                           mod;       }     cout << (f[31][0][0][0][0][0][0] + mod - 1) % mod;     return 0;   }   