#include<bits/stdc++.h>
#include<iomanip>
#include<cmath>
using namespace std;
typedef long long int lli;
#define PB push_back
#define MP make_pair
#define FR first
#define SR second
#define LB lower_bound
#define UB upper_bound
typedef vector<long long int> vi;
typedef pair<long long int,long long int> pi;
#define all(a) (a).begin(),(a).end()
#define allr(a) (a).rbegin(),(a).rend()
#define FOR(i,a,b) for(int i=a;i<b;i++)
int main()
{
	ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    lli N,M;
    cin>>N>>M;
    vi a(M);
    FOR(i,0,M)
    {
    	cin>>a[i];
    }
    if(M==0)
    {
    	cout<<1;
    }
    else
    {
    sort(all(a));
    vi interval;
    if(a[0]-1-0!=0)
    	interval.PB(a[0]-1-0);
    FOR(i,1,M)
    {
    	if(a[i]-a[i-1]-1!=0)
    		interval.PB(a[i]-a[i-1]-1);
    }
    if(N+1-a[M-1]-1!=0)
    	interval.PB(N-a[M-1]);
    lli ans=INT_MAX;
    FOR(i,0,interval.size())
    {
    	ans=min(ans,interval[i]);
    }
    lli fintime=0;
    FOR(i,0,interval.size())
    {
    	lli cal=(interval[i]+ans-1)/ans;
    	fintime=fintime+cal;
    }
    cout<<fintime;
}



}  
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#define pi 3.141592653589793238
#define int long long
#define ld long double
using namespace __gnu_pbds;
using namespace std;
template <typename T>
using ordered_set = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;
  

long long powm(long long a, long long b,long long m) {
    long long res = 1;
    while (b > 0) {
        if (b & 1)
            res = res * a %m;
        a = a * a %m;
        b >>= 1;
    }
    return res;
}



signed main()
{

ios_base::sync_with_stdio(false);
cin.tie(NULL);  
cout.tie(0);   

#ifndef ONLINE_JUDGE
    if(fopen("INPUT.txt","r"))
    {
    freopen ("INPUT.txt" , "r" , stdin);
    freopen ("OUTPUT.txt" , "w" , stdout);
    }
#endif          

    int n,m;
    cin>>n>>m;
    int a[m+4];
    a[0]=0;
    a[m+1]=n+1;
    for(int i=1;i<=m;i++)
    {
        cin>>a[i];
    }
    sort(a,a+m+2);
    int mn=1e17;
    for(int i=1;i<=m+1;i++)
    {
        if(a[i]-a[i-1]>1)
        mn=min(mn,a[i]-a[i-1]-1);
    }
    int ans=0;
    for(int i=1;i<=m+1;i++)
    {
        ans+=(a[i]-a[i-1]-1+mn-1)/mn;
    }
    cout<<ans;
}      
