#include <bits/stdc++.h>
using namespace std;
const int OX = 200, OY = 200;
const int DX[8] = {1, 2, -1, -2, -2, -1, 1, 2};
const int DY[8] = {2, 1, 2, 1, -1, -2, -2, -1};
const long long MOD = 1e9 + 7;
const int N = 1e5, T = 50;
int n, he, ta, dep[4 * OX][4 * OY], cnt[T + 5];
long long k;
pair<int, int> q[N];
int main() {
  scanf("%I64d%d", &k, &n);
  int x, y;
  for (int i = 1; i <= n; i++) {
    scanf("%d%d", &x, &y);
    dep[x + OX][y + OY] = -1;
  }
  dep[0 + OX][0 + OY] = 1;
  cnt[1]++;
  q[++ta] = {0 + OX, 0 + OY};
  int xx, yy;
  long long ted = 1;
  while (++he <= ta) {
    x = q[he].first;
    y = q[he].second;
    if (dep[x][y] > k || dep[x][y] > T) continue;
    for (int i = 0; i < 8; i++) {
      xx = x + DX[i];
      yy = y + DY[i];
      if (dep[xx][yy] == 0) {
        dep[xx][yy] = dep[x][y] + 1;
        cnt[dep[xx][yy]]++;
        ++ted;
        q[++ta] = {xx, yy};
      }
    }
  }
  if (k <= T || cnt[T] == 0)
    printf("%I64d\n", ted);
  else {
    long long z = k - T;
    long long z_plus_1 = z + 1;
    long long rem = z % MOD;
    if (z & 1)
      z_plus_1 >>= 1;
    else
      z >>= 1;
    z %= MOD;
    z_plus_1 %= MOD;
    long long ans = (z * z_plus_1 % MOD) * 28 % MOD;
    (ans += rem * cnt[T + 1] % MOD) %= MOD;
    (ans += ted) %= MOD;
    printf("%I64d\n", ans);
  }
  return 0;
}
