#include<bits/stdc++.h>
 
using namespace std;
typedef long long ll;
typedef pair<ll,ll> P;
typedef map<ll,ll>::iterator itll;
typedef long double ld;
typedef map<ll,ll> mapll;
 
#define con continue
#define pb push_back
#define fi first
#define se second
#define fr front()
#define INF 1000000000000000000
#define all(vl) vl.begin(),vl.end()
#define m_p make_pair 
#define sz(a) sizeof(a)
#define forn(mp,it) for(it = mp.begin();it!=mp.end();it++)
#define FOR(i,a,n) for(ll i=a;i<n;i++) 
#define FORE(i,a,n) FOR(i,a,n+1)
#define Endl endl
#define eNdl endl
#define enDl endl
#define endL endl
#define MIN(x,y) x=min(x,y)
#define MAX(x,y) x=max(x,y)
#define left 0
#define right 1
 
const double one = 1.0;
const double PI = 3.14159265/*358979323846*/;
const ll maxn = 1e4+10;

ll Ceil(ll a,ll b)
{
	return (a+b-1)/b;
}

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	ll n,m;
	cin>>n>>m;
	vector<ll> blue;
	FOR(i,0,m)
	{
		ll a;
		cin>>a;
		blue.pb(a);
	}
	if(m == 0)
	{
		cout<<1<<endl;
		return 0;
	}
	sort(all(blue));
	vector<ll> dis;
	FOR(i,0,blue.size())
	{
		if(i == 0)
		{
			if(blue[i]-1>1)dis.pb(blue[i]-1);
		}
		if(blue[i+1]-blue[i]>1)dis.pb(blue[i+1]-blue[i]-1);
		if(i == blue.size()-1)
		{
			if(n-blue[i]>1)dis.pb(n-blue[i]);
		}
	}
	ll mi = 1e18;
	FOR(i,0,dis.size())
	{
		mi = min(mi,dis[i]);
	 } 
	ll ans = 0;
	FOR(i,0,dis.size())
	{
		ans+=Ceil(dis[i],mi);
	}
	cout<<ans<<Endl;
	return 0;
}
#include <bits/stdc++.h>
#define pb push_back
#define ll long long
#define ull unsigned long long
#define mp make_pair
#define si short int
#define speed ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define pill pair<ll,ll>
#define f first
#define s second
#define pilc pair<ll,char>
#define all(a) (a).begin(),(a).end()
#define rep(s,e,step) for(int i = (s); i < (e) ; i += step)
#define vrep(s,e,step) for(int j = (s); j < (e) ; j += step)
#define ex exit(0) 
#define sz(a) (a).size()
#define triple pair<pill, ll>
#define pinode pair<node*, node*>
#define quadra pair<pill, pill>
#define ld long double
using namespace std;
 
const ll N = 1e6 + 100;
const ll M = 1e6 + 101;
const ll big = 1e17;
const ll hsh2 = 1964325029 ;
const long long mod = 1e9 + 7;
const long double EPS = 1e-10;
const ll block = 1e7;
const ll shift = 2e3;
const ld pi = acos(-1.0);

ll n, m;
ll a[N];

int main() {
	speed;
	cin >> n >> m;
	ll L = 1, sz = n, ans = 0;
	for(int i = 1; i <= m; i++)
		cin >> a[i];
	sort(a + 1, a + m + 1);		
	for(int i = 1; i <= m; i++) {
		if(a[i] != L)
			sz = min(a[i] - L, sz);
		L = a[i] + 1;
	}
	if(a[m] != n)
		sz = min(sz, n - a[m]);
	L = 1;
	for(int i = 1; i <= m; i++) {
		ans += (a[i] - L + sz - 1) / sz;
		L = a[i] + 1;
	}
	ans += (n - L + sz) / sz;
	cout << ans;
}
/*
4 0
3 5 5 4
1
1 1

*/