#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
typedef pair<int,int> P;
typedef struct tre{
  int c,w;
};
P dp[1005][1005];
tre t[1005];
P solve(int i,int rem); 
int w,n;
int main(void){
  P ans;
  for(int l=1;;l++){
    scanf("%d",&w);
    if(!w)break;
    scanf("%d",&n);
    for(int i=0;i<n;i++)scanf("%d,%d",&t[i].c,&t[i].w);
    memset(dp,-1,sizeof(dp));
    ans=solve(0,w);
    printf("Case %d:\n%d\n%d\n",l,ans.first,w-ans.second);
  }
}

P solve(int i,int rem){
  P res;
  if(dp[i][rem].first>=0)return dp[i][rem];
  if(i>=n){
    res.first=0;
    res.second=rem;
    return res;
  }
  if(t[i].w>rem){
    res=solve(i+1,rem);
  }
  else{
    res=solve(i+1,rem);
    P temp=solve(i+1,rem-t[i].w);
    temp.first+=t[i].c;
    res=max(res,temp);
  }
  return dp[i][rem]=res;
}