#include #include #include using namespace std; long long solve( const vector& a, long long W ) { vector best_score_for_wrap_before_the_word(1, 0); for(int i=0; i!=a.size(); ++i) { long long bs = 0x7fffffff; long long w = 0; for(int j=i; j>=0; --j) { w += a[j]; bs = min(bs, abs(w-W)+best_score_for_wrap_before_the_word[j]); } best_score_for_wrap_before_the_word.push_back(bs); } long long bs = 0x7fffffff; long long w = 0; for(int j=a.size()-1; j>=0; --j) { w += a[j]; bs = min(bs, max(0LL,w-W)+best_score_for_wrap_before_the_word[j]); } return bs; } int main() { for(long long N,W,nCase=1; cin>>N>>W,N|W; ++nCase) { assert( 0 < N && N <= 1000 ); assert( 0 < W && W <= 1000000 ); vector a(N); for(int i=0; i!=N; ++i) { cin >> a[i]; assert( 0 < a[i] && a[i] < W ); } cout << "Case " << nCase << ": " << solve(a, W) << endl; } }