#include <iostream> #include <cstdlib> #include <cstring> using namespace std; #define MAX 200000000 int r[201],sum[201][31],one[201][201]; int main() { int N,K,i,j,k,middle,get,c=1; while(cin>>N>>K && (N||K)) { for(i=1; i<=N; i++)cin >> r[i]; memset(sum, 0, sizeof(sum)); memset(one, 0, sizeof(one)); for(i=1; i<=N; i++){ for(j=1; j<=N; j++){ middle = (i+j)/2; for(k=i; k<=j; k++) one[i][j] += abs(r[k] - r[middle]); } } for(i=1;i<=N;i++) sum[i][0]=MAX; for(i=1; i<=N; i++){ for(j=1; (j<=i)&&(j<=K); j++){ sum[i][j] = MAX; for(k=j-1; k<=i-1; k++){ get = sum[k][j-1]+one[k+1][i]; if (get < sum[i][j]) sum[i][j] = get; } } } cout << "Chain " << c++ << endl; cout << "Total distance sum = " << sum[N][K] << " " << endl << endl; } return 0; }