#include <bits/stdc++.h>


using namespace std;
#define ll long long int
#define maxn 2000007


void solve(){
  int n,m;
  cin>>n>>m;
  vector<int> a(m);
  for(int i=0;i<m;i++){
    cin>>a[i];
  }
  sort(a.begin(),a.end());
  int l=0;
  vector<int> diff;
  for(auto x : a){
    if(x-l-1){
        diff.push_back(x-l-1);
    }
    l=x;
  }
  if(n-l){
        diff.push_back(n-l);
    }

    if(diff.empty()){
        cout<<0<<endl;
        return ;
    }
  sort(diff.begin(),diff.end());
  ll ans=1;
  for(int i=1;i<diff.size();i++){
    ans+=(diff[i]+diff[0]-1)/diff[0];
  }
  cout<<ans<<endl;

}




int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t=1;


//cin>>t;
for(int i=0;i<t;i++)
    solve();
return 0;
}

#include <iostream> // cout, endl, cin
#include <cmath> //sqrt pow
#include <string> // string, to_string, stoi
#include <vector> // vector
#include <algorithm> // min, max, swap, sort, reverse, lower_bound, upper_bound
#include <utility> // pair, make_pair
#include <tuple> // tuple, make_tuple
#include <cstdint> // int64_t, int*_t
#include <cstdio> // printf
#include <map> // map
#include <queue> // queue, priority_queue
#include <set> // set
#include <stack> // stack
#include <deque> // dequef
#include <unordered_map> // unordered_map
#include <unordered_set> // unordered_set
#include <bitset> // bitset
#include <cctype> // isupper, islower, isdigit, toupper, tolower
#include <climits>

#define rep(i, n) for (int i = 0; i < n; i++)
using ll = long long;
using ld = long double;
#define vi vector<int>
#define vvi vector<vi>
#define vl vector<ll>
#define pii pair<int, int>
#define pll pair<ll, ll>
#define all(a) (a).begin(), (a).end()
#define mod 1000000007
using namespace std;
int main(){
  int n,m;
  cin >> n >> m;
  int white = n - m;
  int before = 0;
  int mn = 1000000000;
  vi a(m);
  rep(i, m) cin >> a[i];
  sort(all(a));
  vi length;
  rep(i, m){
    int num = a[i] - before - 1;
    if(num){
      mn = min(mn, num);
      length.push_back(num);
    }
    before = a[i];
  }
  if(n - before){
    mn = min(mn, n - before);
    length.push_back(n - before);
  }
  int ans = 0;
  for(int num : length){
    ans += ceil((double)num / mn);
  }
  cout << ans << endl;
}