//比较巧妙, 不看书也写不出来应该。。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 50 + 5;
const int inf = 100000000;
int v[maxn];
int dp[maxn][maxn];
int d(int l, int r)
{
if(l >= r-1) return dp[l][r] = 0;
if(dp[l][r] != inf) return dp[l][r];
else
{
for(int i = l + 1; i < r; ++i)
{
dp[l][r] = min(dp[l][r], d(l, i) + d(i, r) + v[r] - v[l]);
}
}
return dp[l][r];
}
int main()
{
int len;
while(scanf("%d", &len) == 1 && len)
{
memset(v,0,sizeof(v));
for(int i =0; i < maxn; ++i)
for(int j = 0; j < maxn; ++j) dp[i][j] = inf;
int n;
cin >> n;
for(int i = 1; i <= n; ++i) scanf("%d", &v[i]);
v[0] = 0;
v[n+1] = len;
printf("The minimum cutting is %d.\n", d(0,n+1));
}
return 0;
}