#include <iostream>
using namespace std;
int main(){
	int W_max,N; int cnt=0;
	while(1){
	cin >> W_max ;
	if(W_max==0) break;
	cin >> N ;
	int weight[1000]={0}; int P[1000]={0}; char ch; int P_max=0;
	int dp[1001][1001]; 
	for(int i=0;i<1001;i++)
		for(int j=0;j<1001;j++) dp[i][j]=-1;//初期化上手くできなかった
	for(int i=0;i<N;i++) cin >> P[i] >> ch >> weight[i] ;
	dp[0][0]=0;
	for(int i=0;i<N;i++){
		for(int j=0;j<=W_max;j++){
			if(dp[i][j]==-1) continue;
			if(j+weight[i]<=W_max) dp[i+1][j+weight[i]]=max(dp[i+1][j+weight[i]],dp[i][j]+P[i]);
			dp[i+1][j]=max(dp[i+1][j],dp[i][j]);
		};
	};
	int W_min=W_max;
	for(int i=0;i<=W_max;i++) if(dp[N][i]>P_max) P_max=dp[N][i];
	for(int i=0;i<=W_max;i++) if(dp[N][i]==P_max) W_min=min(W_min,i);
	cout << "Case " << ++cnt << ":\n" ;
	cout << P_max << '\n' << W_min << '\n' ;
	};
}