#include <cstdio>#include <algorithm>#include <memory.h>using namespace std;const int MAX = 1001;int dp[MAX][MAX];int t[MAX], sum[MAX];int n, L, C;int S(int x, int y){return sum[y] - sum[x - 1];}int DI(int x, int y){int t = L - S(x, y);if(t == 0)return 0;else if(t <= 10)return -C;else return (t - 10) * (t - 10);}int main(int argc, char const *argv[]){int N;scanf("%d", &N);for(int tc = 1; tc <= N; ++tc){scanf("%d", &n);int caseno = 1;while(n){scanf("%d%d", &L, &C);for(int i = 1; i <= n; ++i){scanf("%d", &t[i]);sum[i] = sum[i - 1] + t[i];}int M = 1, s = 0;memset(dp, 0x6f, sizeof(dp));for(int i = 1; i <= n; ++i){s += t[i];if(s > L){s = t[i];++M;}}dp[0][0] = 0;for(int i = 1; i <= M; ++i){for(int j = 1; j <= n; ++j)for(int k = j - 1; k >= 0 && S(k + 1, j) <= L; --k){dp[i][j] = min(dp[i][j], dp[i - 1][k] + DI(k + 1, j));}}printf("Case %d:nnMinimum number of lectures: %dnTotal dissatisfaction index: %dn", caseno++, M, dp[M][n]);scanf("%d", &n);if(n){printf("n");}}if(tc != N){printf("n");}}return 0;}


