rendered paste body#include <stdio.h>
int n, l, u, v[100000], mintrocas, ntrocas, narms, temp;
int compareints(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
int isavaiable(int a) {
int *p;
p = (int*)bsearch(&a,v,l,sizeof(int),compareints);
if (p == NULL) return 0;
return 1;
}
int main() {
int i, j;
while (scanf("%d%d", &n, &l)!=EOF&&!(n==0&&l==0)) {
for (i=0; i<l; i++) {
scanf("%d", &v[i]);
}
ntrocas = 0;
narms = 1;
for (i=1; i<l; i++) {
/* 1 3 4 5 6 8 */
temp = v[i] - v[i-1] - 1;
ntrocas+= temp;
narms+= temp;
narms++;
if (narms >= n) {
break;
}
}
mintrocas = ntrocas;
u = ntrocas;
for (i=1; i<l; i++) {
temp = u - (v[i] - v[i-1] - 1);
if (!isavaiable(v[i]+n-1)) {
++temp;
}
ntrocas = temp;
if (ntrocas < mintrocas) {
mintrocas = ntrocas;
}
u = ntrocas;
}
printf("%d\n", mintrocas);
}
return 0;
}