#include<bits/stdc++.h>
using namespace std;
#define debug printf("%d %s\n",__LINE__,__FUNCTION__)
using ll=long long;using ld=double;using pii=pair<int,int>;using vi=vector<int>;
using qi=queue<int>;using pqi=priority_queue<int>;using si=set<int>;
#define pb push_back
#define mk make_pair
#define ins insert
#define era erase
#define fi first
#define se second
#define lowbit(x) x&-x
const int INF=0x3f3f3f3f;
const ll INFLL=0x3f3f3f3f3f3f3f3f;
const double PI=acos(-1.0);
int _w,_t;FILE* _f;

const int N=2e5+5;

int n,m,a[N],len,b[N],cnt,ans;

void solve(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++){
        scanf("%d",&a[i]);
    }
    a[++m]=n+1;
    sort(a+1,a+m+1);
    len=INF;
    for(int i=1;i<=m;i++){
        if(a[i]-a[i-1]-1){
            b[++cnt]=a[i]-a[i-1]-1;
            len=min(len,a[i]-a[i-1]-1);
        }
    }
    for(int i=1;i<=cnt;i++){
        // printf("%d%c",b[i]," \n"[i==cnt]);
        ans+=(b[i]+len-1)/len;
    }
    printf("%d\n",ans);
}

int main(){
    #ifdef MULTI_CASES
    _w=scanf("%d",&_t);while(_t--)
    #endif
    solve();
    return 0;
}
#include<bits/stdc++.h>
#define rep(i,n) for(int i=0;i<(int)n;i++)
using namespace std;

int main(){
  int n,m;
  cin>>n>>m;

  vector<long long>a(m,0);
  for(int i=0;i<a.size();i++)
    cin>>a.at(i);
  a.insert(a.begin(),0);
  a.push_back(n+1);
  sort(a.begin(),a.end());
  
  vector<long long>len;
  long long k=1000000000;
  for(int i=0;i<a.size()-1;i++){
    long long temp=0;
    temp=a.at(i+1)-a.at(i)-1;

    if(temp){
    len.push_back(temp);
    k=k<temp?k:temp;
    }
  }

  long long ans=0;
  for(int i=0;i<len.size();i++){
    ans+=len.at(i)/k;
    if(len.at(i)%k)
      ans++;
  }

  cout<<ans<<endl;
  
  return 0;
}
