#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
#pragma GCC target( \
    "sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
using namespace std;
namespace t {
template <typename T>
inline const T gcd(T __m, T __n) {
  while (__n != 0) {
    T __t = __m % __n;
    __m = __n;
    __n = __t;
  }
  return __m;
}
template <typename T>
inline const T max(const T &a, const T &b) {
  return a > b ? a : b;
}
template <typename T>
inline const T min(const T &a, const T &b) {
  return a < b ? a : b;
}
template <typename T>
inline const T abs(const T &a) {
  return a > 0 ? a : -a;
}
template <typename T>
inline void in(T &x) {
  register T res = 0;
  register int neg = 1;
  char c = getchar();
  for (; !isdigit(c); c = getchar()) {
    if (c == '-') {
      neg = -1;
    }
  }
  for (; isdigit(c); c = getchar()) {
    res = res * 10 + c - '0';
  }
  x = res * neg;
}
inline int read() {
  register int res = 0, neg = 1;
  char c = getchar();
  for (; !isdigit(c); c = getchar()) {
    if (c == '-') {
      neg = -1;
    }
  }
  for (; isdigit(c); c = getchar()) {
    res = res * 10 + c - '0';
  }
  return res * neg;
}
}  // namespace t
const int N = 1500;
const int mod = 1000000007;
struct node {
  long long x, y, p;
};
long long dx[8] = {-1, -1, 1, 1, -2, -2, 2, 2},
          dy[8] = {-2, 2, -2, 2, -1, 1, -1, 1}, k, n, ans = 1, c[400000],
          a[4000][4000];
inline void bfs(long long k) {
  queue<node> q;
  q.push(node{N, N, 0});
  while (!q.empty()) {
    long long x = q.front().x, y = q.front().y, p = q.front().p;
    q.pop();
    if (k == p) break;
    for (int i = 0; i < 8; ++i) {
      long long xx = dx[i] + x, yy = dy[i] + y;
      if (a[xx][yy] == 0) {
        q.push({xx, yy, p + 1});
        a[xx][yy] = 1;
        ++ans;
        ++c[p + 1];
      }
    }
  }
}
int main() {
  t::in(k), t::in(n);
  for (int i = 1; i <= n; ++i) {
    long long x, y;
    t::in(x), t::in(y);
    a[x + N][y + N] = 1;
  }
  c[0] = 1;
  a[N][N] = 1;
  if (k <= 500) {
    bfs(k);
    printf("%lld\n", ans);
  } else {
    bfs(500);
    k = (k - 499) % mod;
    printf("%lld\n", ((ans + (k - 1) * c[500] % mod) % mod +
                      (k - 1) * k / 2 % mod * ((c[500] - c[499]) + mod) % mod) %
                         mod);
  }
  return 0;
}
