#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007, pos[8][2] = {{-2, -1}, {-1, -2}, {-1, 2}, {-2, 1},
                                         {2, 1},   {1, 2},   {1, -2}, {2, -1}};
inline int add(int a, int b) {
  if ((a += b) >= mod) a -= mod;
  return a;
}
inline int dec(int a, int b) {
  if ((a -= b) < 0) a += mod;
  return a;
}
inline int mult(int a, int b) {
  long long t = 1ll * a * b;
  if (t >= mod) t %= mod;
  return t;
}
bool flag[2010][2010];
long long K;
int n, ans[2010];
void bfs() {
  vector<pair<int, int> > v[2];
  int cur = 0;
  ans[0] = 1;
  v[0].push_back(make_pair(1001, 1001));
  flag[1001][1001] = 1;
  for (int i = 1; i <= 500; i++) {
    cur ^= 1;
    v[cur].clear();
    for (auto &x : v[cur ^ 1]) {
      for (int j = 0; j < 8; j++) {
        int nx = x.first + pos[j][0], ny = x.second + pos[j][1];
        if (!flag[nx][ny])
          flag[nx][ny] = 1, v[cur].push_back(make_pair(nx, ny));
      }
    }
    ans[i] = v[cur].size();
  }
}
int main() {
  scanf("%lld%d", &K, &n);
  for (int i = 1, ti, tj; i <= n; i++) {
    scanf("%d%d", &ti, &tj);
    flag[ti + 1001][tj + 1001] = 1;
  }
  bfs();
  int ret = 0;
  for (int i = 0; i <= min(K, 500ll); i++) ret = add(ret, ans[i]);
  if (K <= 500)
    printf("%d\n", ret);
  else {
    K %= mod;
    int diff = ans[500] - ans[499];
    printf("%d\n",
           add(ret, mult(mult(dec(K, 500), add(add(ans[500], ans[500]),
                                               mult(dec(K, 499), diff))),
                         (mod + 1) / 2)));
  }
  return 0;
}
