#include <bits/stdc++.h>
using namespace std;
inline long long fpow(long long n, long long k, int p = 998244353) {
  long long r = 1;
  for (; k; k >>= 1) {
    if (k & 1) r = r * n % p;
    n = n * n % p;
  }
  return r;
}
inline long long inv(long long a, long long p = 998244353) {
  return fpow(a, p - 2, p);
}
inline long long addmod(long long a, long long val, long long p = 998244353) {
  {
    if ((a = (a + val)) >= p) a -= p;
  }
  return a;
}
inline long long submod(long long a, long long val, long long p = 998244353) {
  {
    if ((a = (a - val)) < 0) a += p;
  }
  return a;
}
inline long long mult(long long a, long long b, long long p = 998244353) {
  return (long long)a * b % p;
}
set<int> adj[(int)(1e5 + 5)];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  int n, k;
  cin >> n >> k;
  vector<int> query(k);
  for (int i = 0; i < k; i++) cin >> query[i];
  vector<bool> visited(n + 1, false);
  long long ans = 3 * n - 2;
  for (int i = 0; i < k; i++) {
    int x = query[i];
    if (x - 1 >= 1 && visited[x - 1]) {
      adj[x - 1].insert(x);
    }
    if (x + 1 <= n && visited[x + 1]) adj[x + 1].insert(x);
    adj[x].insert(x);
    visited[x] = true;
  }
  for (int i = 1; i <= n; i++) {
    if (!visited[i]) continue;
    if (adj[i].find(i) != adj[i].end()) ans--;
    if (adj[i].find(i - 1) != adj[i].end()) ans--;
    if (adj[i].find(i + 1) != adj[i].end()) ans--;
  }
  cout << ans << "\n";
}
