#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <stack>
#include <queue>
#include <vector>
#include <climits>
using namespace std;
int coun[55][55],a[55];//coun记录left到right切点的花费
int work(int left,int right)
{
if(coun[left][right]>=0)
return coun[left][right];
if(left+1==right)
return 0;
int minn=INT_MAX;
for(int i=left+1; i<right; i++)
minn=min(minn,work(left,i)+work(i,right)+a[right]-a[left]);//遍历两个切点之间的所有切点,看看在哪个切点切最短,
return coun[left][right]=minn;
}
int main()
{
int L;
int n;
while(scanf("%d",&L)&&L)
{
memset(a,0,sizeof(a));
memset(coun,-1,sizeof(coun));
scanf("%d",&n);
a[0]=0;
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
a[n+1]=L;
int ans=work(0,n+1);
printf("The minimum cutting is %d.\n",ans);
}
return 0;
}