#include <bits/stdc++.h>
using namespace std;
pair<int, int> P, Q, q[200000],
    D[8] = {make_pair(-1, -2), make_pair(-2, -1), make_pair(-2, 1),
            make_pair(1, -2),  make_pair(2, -1),  make_pair(2, 1),
            make_pair(1, 2),   make_pair(-1, 2)};
int t, t1, t2, n, he, ta, x, y, v[300][300], f[300];
bool b[300][300];
long long k;
const long long MO = int(1e9) + 7;
void bfs() {
  he = 0;
  ta = 1;
  q[1] = make_pair(100, 100);
  memset(v, -1, sizeof(v));
  v[100][100] = 0;
  f[0] = 1;
  while (he < ta) {
    pair<int, int> P = q[++he];
    for (int d = 0; d <= 7; d++) {
      pair<int, int> Q =
          make_pair(P.first + D[d].first, P.second + D[d].second);
      if (Q.first < 0 || Q.first >= 200 || Q.second < 0 || Q.second >= 200)
        continue;
      if (b[Q.first][Q.second]) continue;
      if (v[Q.first][Q.second] != -1) continue;
      v[Q.first][Q.second] = v[P.first][P.second] + 1;
      f[v[Q.first][Q.second]]++;
      q[++ta] = Q;
    }
  }
}
int main() {
  cin >> k >> n;
  for (int i = 1; i <= n; i++) {
    cin >> x >> y;
    x += 100;
    y += 100;
    b[x][y] = 1;
  }
  bfs();
  for (int i = 1; i <= 41; i++) f[i] += f[i - 1];
  if (k <= 40)
    cout << f[k] << endl;
  else if (f[40] == f[41])
    cout << f[40] << endl;
  else {
    t1 = f[40];
    t2 = f[41];
    t = t2 - t1;
    cout << ((k - 40) % MO * t % MO +
             (k - 41) % MO * 14 % MO * ((k - 40) % MO) % MO + t1) %
                MO
         << endl;
  }
  return 0;
}
