#include <bits/stdc++.h>
using namespace std;

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

    vector<int> A(M + 2, 0);
    for (size_t i = 1; i <= M; i++)
    {
        cin >> A[i];
    }
    A.back() = N + 1;
    sort(A.begin(), A.end());

    map<int, size_t> count;
    int minimum = N;
    for (size_t i = 0; i <= M; i++)
    {
        if (A[i] + 1 == A[i + 1])
        {
            continue;
        }
        minimum = min(A[i + 1] - A[i] - 1, minimum);
        count[A[i + 1] - A[i] - 1]++;
    }
    int ans = 0;
    for (pair<int, size_t> c : count)
    {
        ans += (c.first + (minimum - 1)) / minimum * c.second;
    }
    cout << ans << endl;
}

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define vi vector<ll>
#define pb push_back
#define ff first
#define ss second
#define inf 2e18
#define ull unsigned long long
#define pi acos(-1.0)
#define mod 1000000007
#define lop0(n) for(ll i=0;i<n;i++)
#define lop(j,n) for(ll j=0;j<n;j++)
#define lop1(i,n) for(ll i=1;i<=n;i++)
#define all(v) v.begin(),v.end()
ll Set(ll N,ll pos){ return N=N | (1LL<<pos); }
ll reset(ll N,ll pos){ return N= N & ~(1LL<<pos); }
bool check(ll N,ll pos){ return (bool)(N & (1LL<<pos)); }
ll dx[] = { 1,0,-1,0 };
ll dy[] = { 0,1,0,-1 };
#define fastio ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
ll arr[200005];
main()
{
   ll n,m;
   cin>>n>>m;
   lop1(i,m)
   {
       cin>>arr[i];
   }
   if(n==m)
   {
       cout<<0<<endl;
       return 0;
   }
   sort(arr+1,arr+m+1);
   ll mn=inf;
   ll x=0;
   lop1(i,m)
   {
       ll z=arr[i]-x-1;
       if(z>0) mn=min(mn,z);
       x=arr[i];
   }
   if(arr[m]!=n)
   {
       mn=min(mn,n-arr[m]);
   }
   if(mn==0 or mn==inf)
   {
       cout<<n;
       return 0;
   }
   x=0;
   ll ans=0;
    lop1(i,m)
   {
       ll z=arr[i]-x-1;
       if(z>0)
       {
           ll k=z+mn-1;
           ans+=(k/mn);
       }
       x=arr[i];
   }
   if(arr[m]!=n)
   {
       ll k=n-arr[m]+mn-1;
       ans+=(k/mn);
   }
   cout<<ans;



}

