#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
long double fixAngle(long double A) { return A > 1 ? 1 : (A < -1 ? -1 : A); }
double dcmp(double a, double b) {
  return fabs(a - b) < 1e-7 ? 0 : a > b ? 1 : -1;
}
bool grid[1000 + 2][1000 + 4];
int n, m;
bool valid_row[1000 + 3];
bool valid_col[1000 + 3];
vector<int> graph[10000];
vector<int> path;
int visited[10000];
bool find_path(int node, int snk) {
  visited[node] = 1;
  path.push_back(node);
  if (node == snk) {
    return true;
  }
  bool r = false;
  for (auto child : graph[node]) {
    if (visited[child]) continue;
    r = find_path(child, snk);
    if (r == true) break;
  }
  if (!r) path.pop_back();
  return r;
}
int max_flow(int src, int snk) {
  int f = 0;
  while (find_path(src, snk)) {
    f++;
    for (int i = 1; i < path.size(); i++) {
      int u = path[i - 1];
      int v = path[i];
      graph[u].erase(find(graph[u].begin(), graph[u].end(), v));
      graph[v].push_back(u);
    }
    memset(visited, 0, sizeof visited);
    path.clear();
  }
  return f;
}
int main() {
  memset(valid_row, 1, sizeof valid_row);
  memset(valid_col, 1, sizeof valid_col);
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int a, b;
    cin >> a >> b;
    valid_row[a] = 0;
    valid_col[b] = 0;
  }
  int cnt = 0;
  for (int i = 2; i < n; i++) {
    if (n % 2 == 1 && i == n / 2 + 1) continue;
    cnt += valid_row[i];
    cnt += valid_col[i];
  }
  if (n % 2 == 1) {
    cnt += valid_row[n / 2 + 1] || valid_col[n / 2 + 1];
  }
  cout << cnt << "\n";
}
