#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;
}
