#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string>
#include<vector>
#include<map>
#include<stack>
#include<queue>

using namespace std;

int main(){
	int N,W;
	int c=1;
	
	while(scanf("%d",&W)){
		if(W==0) break;
		scanf("%d",&N);
		
		vector<int> v(N);
		vector<int> w(N);
		vector<int> dp(10001,0);
		
		for(int i=0;i<N;i++){
			scanf("%d, %d",&v[i],&w[i]);
		}
		for(int i=0;i<N;i++){
			for(int j=W;j>=w[i];j--){
				dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
			}
		}
		printf("Case %d:\n",c);
		c++;
		printf("%d\n",*max_element(dp.begin(),dp.begin()+W+1));
		vector<int>::iterator maxit=max_element(dp.begin(),dp.begin()+W+1);
		printf("%ld\n",distance(dp.begin(),maxit));
	}
}
