//没想到测试数据这么多 竟因为memset超时 耗费了整整一天时间
#include <string.h>
#include <stdio.h>
#define MAX 1010
int c[MAX][MAX];
int x[MAX]; // ·Ö¸îλÖÃ
int search(int cas,int length)
{
int i,j,k;
for(i = 1;i <= cas;i++) c[i][i] = x[i+1] - x[i-1];
for(i = 1;i <= cas;i++)
{
for(j = i-1;j>=0;j--)
{
int temp,min = 100000000;
for( k = j;k<=i;k++)
{
temp = c[j][k-1] + c[k+1][i] + x[i+1]-x[j-1];
if(temp < min){min = temp;c[j][i] = min;}
}
}
}
return c[1][cas];
}
int main()
{
int length,i;
while(scanf("%d",&length) && length){
// memset(c,0,sizeof(c));
int cas;
scanf("%d",&cas);
for(i = 1;i <= cas;i++)
scanf("%d",&x[i]);
x[cas+1] = length; x[0] = 0;
for(i = 1;i <= cas+5;i++)
c[i][i-1] = 0;
printf("The minimum cutting is %d./n",search(cas,length));
}
return 0;
}