#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
long long tu[2003][2003];
long long mx[] = {1, 2, 2, 1, -1, -2, -2, -1};
long long my[] = {2, 1, -1, -2, -2, -1, 1, 2};
queue<long long> qx, qy;
long long n, ans, cnt[1200], step, k;
void bfs(long long x, long long y) {
  tu[x][y] = 1;
  qx.push(x);
  qy.push(y);
  while (!qx.empty()) {
    long long x = qx.front(), y = qy.front();
    qx.pop();
    qy.pop();
    ans++;
    cnt[tu[x][y]]++;
    if (tu[x][y] == step + 1) continue;
    for (long long i = 0; i < 8; i++) {
      long long xx = x + mx[i], yy = y + my[i];
      if (tu[xx][yy] != 0) continue;
      tu[xx][yy] = tu[x][y] + 1;
      qx.push(xx);
      qy.push(yy);
    }
  }
}
int main() {
  cin >> k >> n;
  for (long long i = 1, x, y; i <= n; i++) {
    cin >> x >> y;
    tu[x + 1000][y + 1000] = 1;
  }
  step = min(k, 500ll);
  bfs(1000, 1000);
  if (k <= 500ll) {
    cout << ans % mod;
    return 0;
  }
  long long cha = (cnt[501] - cnt[500]) % mod;
  k = (k - 500ll) % mod;
  cout << (ans + (cnt[501] * k) % mod + ((k * (k + 1) / 2) % mod * cha) % mod +
           mod) %
              mod;
  return 0;
}
