//类型,贪心 此题思路:用一个数组储存牛棚有牛的编号,再用一个数组储存每个相邻的牛之间的距离.然后每次的最短距离便是减去最长的相邻牛之间的距离.
/*
ID: jun41821
PROG: barn1
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ofstream fout ("barn1.out");
ifstream fin ("barn1.in");
void find()
{
}
int main()
{
//类型,贪心;
//由于当3块木板中最长的一块被切开 则得出4块木板的答案
int m,s,c,i,*p,*a,num=0,j;
fin>>m>>s>>c;
p=new int[c+1];
a=new int[c+1];
for(i=1;i<=c;i++)
fin>>p[i];
for(i=1;i<=c;i++)
for(j=1;j<=c-i;j++)
if(p[j]>p[j+1])
{
int t;
t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
a[1]=p[1]-1;
for(i=2;i<=c;i++)
{
a[i]=p[i]-p[i-1];
}
if(m<c)
{
while(m>1)
{
int max=0,t;
for(i=2;i<=c;i++)
if(a[i]>max)
{
t=i;
max=a[i];
}
num+=max-1;
a[t]=0;
m--;
}
num=s-(num+a[1]+s-p[c]);
fout<<num<<endl;
}
else
fout<<c<<endl;
return 0;
}