#include <bits/stdc++.h>
using namespace std;
template <class T>
class compare {
 public:
  bool operator()(pair<T, T> &x, pair<T, T> &y) {
    if (x.first == y.first) {
      return x.second > y.second;
    }
    return x.first > y.first;
  }
};
template <class T>
ostream &operator<<(ostream &os, const pair<T, T> &a) {
  os << a.first << " " << a.second;
}
template <class T>
void print(vector<T> &vec) {
  for (int i = 1; i < (int)vec.size(); i++) cout << vec[i] << " ";
  cout << endl;
}
template <class T>
void print(set<T> &s) {
  for (auto it : s) cout << it << " ";
  cout << endl;
}
template <class T>
void print(list<T> &lst) {
  for (auto it : lst) cout << it << " ";
  cout << endl;
}
template <class T>
long long power(T a, int b) {
  long long po = 1;
  while (b--) po *= a;
  return po;
}
template <class T>
pair<T, T> operator+(const pair<T, T> &a, const pair<T, T> &b) {
  return {a.first + b.first, a.second + b.second};
}
template <class T>
pair<T, T> operator-(const pair<T, T> &a, const pair<T, T> &b) {
  return {a.first - b.first, a.second - b.second};
}
template <class T>
pair<T, T> operator*(const pair<T, T> &a, const pair<T, T> &b) {
  return {a.first * b.first, a.second * b.second};
}
template <class T>
pair<T, T> operator%(const pair<T, T> &a, const pair<T, T> &b) {
  return {a.first % b.first, a.second % b.second};
}
template <class T, class U>
pair<T, T> operator+(const pair<T, T> &a, const U &b) {
  return {a.first + b, a.second + b};
}
template <class T, class U>
pair<T, T> operator*(const pair<T, T> &a, const U &b) {
  return {a.first * b, a.second * b};
}
int Set(int N, int pos) { return N = N | (1 << pos); }
int reset(int N, int pos) { return N = N & ~(1 << pos); }
bool check(int N, int pos) { return (bool)(N & (1 << pos)); }
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int n;
  cin >> n;
  int k;
  cin >> k;
  long long ans = 3 * (n - 1) + 1;
  map<pair<int, int>, bool> taken;
  vector<bool> free(n + 1, true);
  while (k--) {
    int x;
    cin >> x;
    free[x] = false;
    if (x != n and free[x + 1] == false) {
      if (taken[pair<int, int>(x + 1, x)] == false) {
        taken[pair<int, int>(x + 1, x)] = true;
        ans--;
      }
    }
    if (x != 1 and !free[x - 1]) {
      if (taken[pair<int, int>(x - 1, x)] == false) {
        taken[pair<int, int>(x - 1, x)] = true;
        ans--;
      }
    }
  }
  for (int i = 1; i <= n; i++)
    if (!free[i]) ans--;
  cout << ans << endl;
  return 0;
}
