#include<stdio.h>
int i,j,l;
int w;
int n;
int kati,omosa;//
int casecnt=0;
long long int dp[1010][1010];//dp[お宝の総数][お宝の重さ]
int main(void){
	scanf("%d",&w);
	while(w!=0){
		for(i=0;i<=n;i++){//初期化
			for(j=0;j<=w;j++){
				if(j>0){
					dp[i][j]=-1;
				}
				else {//最初は何も盗んでいない ここからどんどん盗んでいく
					dp[i][j]=0;
				}
			}
		}
		scanf("%d",&n);
		for(i=0;i<n;i++){//盗む予定のn個のお宝入力
			scanf("%d,%d",&kati,&omosa);
			for(j=0;j<=w;j++){
				if(dp[i][j]>=0){//何も盗んでいない、またはすでに盗んでいたら
					if(dp[i+1][j+omosa]<kati){//送り先より送り元の方が価値が高かったら
						dp[i+1][j+omosa]=dp[i][j]+kati;
					}
				}
			}
			for(j=0;j<=w;j++){
				if(dp[i+1][j]<dp[i][j]){
					dp[i+1][j]=dp[i][j];
				}
			}
		}
		/*for(i=0;i<=n;i++){//デバグ　
			for(j=0;j<=w;j++){
				printf("%d ",dp[i][j]);
			}
			printf("\n");
		}*/
		int maxkati=0,maxomosa=0;
		for(j=0;j<=w;j++){//一番大きな価値の組み合わせ、重さを出力
			if(maxkati<dp[n][j]){
				maxkati=dp[n][j];
				maxomosa=j;
			}
		}
		casecnt++;
		printf("Case %d:\n",casecnt);
		printf("%d\n",maxkati);
		printf("%d\n",maxomosa);
		scanf("%d",&w);
	}
	return 0;
}