#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
 
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define all(v) v.begin(), v.end()
#define V vector
#define debug(v) for(auto i: v) cout << i << " "; cout <<endl
#define vcin(v) rep(i, v.size()) cin >> v[i]
#define wcin(v, w) rep(i, v.size()) cin >>v[i] >>w[i]

int main(){
    ll n,m;
    cin >>n >>m;
    V<ll> a(m);
    vcin(a);

    if(n==m){
        cout <<0;
        return 0;
    }

    sort(all(a));
    reverse(all(a));
    a.push_back(0);
    reverse(all(a));
    a.push_back(n+1);
    V<ll> white;
    rep(i,m+1)if(a[i+1]-a[i]-1>0)white.push_back(a[i+1]-a[i]-1);
    sort(all(white));
    ll cnt=0;
    ll sz=white.size();
    rep(i,sz){
        ll num=(white[i]-1)/white[0]+1;
        cnt+=num;
    }
    cout <<cnt;
}
#include<bits/stdc++.h>
using namespace std;
#define ll long long

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	ll n,m;
	cin>>n>>m;
	vector<ll> a(m);
	if(m==0){
	    cout<<1;
	    return 0;
	}
	for(int i=0;i<m;i++) cin>>a[i];
	sort(a.begin(),a.end());
	ll prev=0;
	vector<ll> nums;
	for(int i=0;i<m;i++){
	    ll cnt = a[i]-prev-1;
	    if(cnt>0) nums.push_back(cnt);
	    prev=a[i];
	}
	ll cnt= n-prev;
	if(cnt>0) nums.push_back(cnt);
	ll ans=0;
	
	if(nums.size()==0) ans=0;
	else{
	    ll mini=nums[0];
	    for(ll i:nums) mini=min(mini,i);
	    for(ll i:nums){
	        //cout << i <<" ";
	        if(i%mini==0) ans+=(i/mini);
	        else{
	            ans+=(i/mini);
	            ans++;
	        }
	    }
	}
	cout<<"\n";
	cout<<ans;
	return 0;
}
//1 2 3 4 5 6 7 8 9 10 11 12 13