#include <bits/stdc++.h>
using namespace std;
long long ans[600];
int mp[2003][2003];
int dx[] = {1, 1, -1, -1, 2, 2, -2, -2};
int dy[] = {2, -2, 2, -2, 1, -1, 1, -1};
queue<pair<int, int>> que;
void bfs(int x, int y) {
  que.push(make_pair(x, y));
  mp[x][y] = 1;
  while (!que.empty()) {
    auto from = que.front();
    que.pop();
    ans[mp[from.first][from.second]]++;
    if (mp[from.first][from.second] > 500) break;
    for (int i = 0; i < 8; i++) {
      int jx = from.first + dx[i];
      int jy = from.second + dy[i];
      if (mp[jx][jy]) continue;
      mp[jx][jy] = mp[from.first][from.second] + 1;
      que.push(make_pair(jx, jy));
    }
  }
}
const long long mod = 1000000007;
int main() {
  long long k, n, cnt = 0;
  cin >> k >> n;
  for (int i = 1, x, y; i <= n; i++) {
    cin >> x >> y;
    x += 1001;
    y += 1001;
    mp[x][y] = 1;
  }
  bfs(1001, 1001);
  if (k < 500) {
    for (int i = 1; i <= k + 1; i++) cnt = (cnt + ans[i]) % mod;
  } else {
    long long inc = ans[500] - ans[499];
    for (int i = 1; i <= 499; i++) cnt = (cnt + ans[i]) % mod;
    k = (k - 498) % mod;
    cnt = (((k * ans[500] % mod + cnt) % mod +
            (k * (k - 1) >> 1) % mod * inc % mod) %
               mod +
           mod) %
          mod;
  }
  cout << cnt << endl;
}
