#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <map>
#include <climits>
#include <random>
#include <chrono>
#include <set>
#define rep(i,begin, end) for (ll i = begin; i < (ll)(end); i++)

using namespace std;
using ll = long long;

template<typename T>
using vec2 = vector<vector<T>>;
template<typename T>
using vec3 = vec2<vector<T>>;
template<typename T>
using vec4 = vec3<vector<T>>;
template<typename T>
using vec5 = vec4<vector<T>>;
template<typename T>
using vec6 = vec5<vector<T>>;



int main(){
    ll N,M;cin>>N>>M;
    vector<ll> A;
    for(int i = 0;i < M;i++){
        ll _a;cin>>_a;
        A.push_back(_a);
    }
    sort(A.begin(),A.end());
    ll before = 0;
    vector<ll> B;
    for(int i = 0;i < M;i++){
        if(A[i] - before != 1)B.push_back(A[i]-before-1);
        before = A[i];
    }
    if(N-before!=0)B.push_back(N-before);
    if(B.size()==0){
        cout<<0<<endl;return 0;
    }
    sort(B.begin(),B.end());
    ll res = 0;
    ll k = B[0];
    // rep(i,0,B.size())cout<<B[i]<<" ";cout<<endl;
    for(ll a : B){
        res += (a+k-1)/k;
    }
    cout<<res<<endl;
}
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using Graph = vector<vector<int>>;
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define inf 1001001001
#define mod 1000000007
#define mod2 998244353
#define pi acos(-1)
#define all(v) v.begin(),v.end()
#define vi vector<int>
#define vl vector<ll>

int dx[4] = {0,-1,0,1};
int dy[4] = {-1,0,1,0};


ll gcd(ll a,ll b){
    if(b>a) swap(a,b);
    if(b==0) return a;
    return gcd(b,a%b);
}
ll lcm(ll a,ll b){
    ll g=gcd(a,b);
    return a/g*b;
}
ll rep_jijo(ll n,ll x){
    if(x==0) return 1;
    if(x%2==0){
        ll t=rep_jijo(n,x/2);
        return t*t%mod;
    }
    return n*rep_jijo(n,x-1)%mod;
}


int main()
{
    int n,m;
    cin >> n >> m;
    set<int> st;
    vector<int> white;
    st.insert(n + 1);
    int k = inf;
    
    rep(i, m) {
        int a;
        cin >> a;
        st.insert(a);
    }
    
    
    int pre = 0;
    for(auto s: st) {
        int sub = s - pre - 1;
        if(sub != 0) k = min(k, sub);
        white.push_back(sub);
        pre = s;
    }

    
    //cout << k << endl;
    int ans = 0;
    /*
    for(auto w: white) {
        cout << w << endl;
    }
    */
    for(int w: white) {

        ans += ceil((double)w / (double)k);
    }
    cout << ans << endl;



    return 0;
}