#include <iostream>
#include <algorithm>
#include <cstdio>

#define rep(i, n) for(int i = 0; i < n; i++)

using namespace std;

int main(){
	int c = 1;
	int w;
	while(cin >> w && w){
		int n;
		int tr[1024][2];
		// 価値を最大に
		// 入れた数 重さ合計 価値
		int dp[1024][1024];
		
		cin >> n;
		rep(i, n){
			scanf("%d, %d", &tr[i][0], &tr[i][1]);
		}

		rep(i, n){
			dp[1][tr[i][1]] = tr[i][0];
		}
		
		rep(i, n){
			for(int j = 0; j <= w; j++){
				if(dp[i][j] != 0){
					int value = dp[i][j] + tr[i][0];
					int we = j + tr[i][1];
					if(we <= w){	
						dp[i + 1][we] = max(dp[i+1][we], value);
					} else {
						dp[i + 1][j] = max(dp[i+1][j], dp[i][j]);
					}
				}
			}
		}
		
		int mv,mw;
		mv = 0; mw = 0;
		rep(i, n){
			for(int j = 0; j <= w; j++){
				if(dp[i][j] > mv){
					mv = dp[i][j];
					mw = j;
				}
			}
		}

		cout << "Case " << c << ':' << endl;
		cout << mv << endl;
		cout << mw << endl;

		c++;
	}
	return 0;
}