#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for (int i = 0; i < (n); i++)
using P = pair<long long,long long>;
using ll = long long;

int main() {
    int N,M;
    cin >> N >> M;

    vector<int> A(M+2);
    A.at(0) = 0;
    A.at(1) = N+1;
    rep(i,M) cin >> A.at(i+2);

    sort(A.begin(),A.end());

    int k = 1000000000;
    vector<int> vec(M+1);
    rep(i,M+1){
        int width = A.at(i+1) - A.at(i) - 1;
        vec.at(i) = width;
        if(width != 0) k = min(k, width);
    }

    int ans = 0;
    rep(i,M+1){
        ans += vec.at(i)/k;
        if(vec.at(i) % k != 0) ans ++;
    }

    cout << ans << endl;
}

#include<bits/stdc++.h> 
using namespace std;
typedef long long ll;
const ll mod = 1000000007;

#define rep(i, n) for (int i = 0 ; i < n ; i++)
#define repl(i, n) for (ll i = 0 ; i < n ; i++)
#define Rep(i, n) for (int i = 1 ; i <= n ; i++)
#define Repl(i, n) for (ll i = 1 ; i <= n ; i++)
#define rep3(i, a, n) for (int i = a ; i < n ; i++)
#define pi 3.141592653589793238462643

int main() {
    ios::sync_with_stdio(false);
	ll n, m; cin >> n >> m;
  	vector<ll> v(m); rep(i,m) cin >> v[i];
  	sort(v.begin(), v.end());
  	vector<ll> space;
  	ll y = 1;
  	rep(i, m) {
    	ll dis = v[i] - y;
    	y = v[i] + 1;
    	if (dis != 0) space.push_back(dis);
  	}
  	if (y != n + 1) space.push_back(n + 1 - y);
  	sort(space.begin(), space.end());
  	ll res = 0;
  	rep(i, space.size()) res += (space[i] + space[0] - 1) / space[0];
  	cout << res;
	
}