#include<bits/stdc++.h>
using namespace std;
int wait[1000],value[1000],Wa=0,wain;
int Power(int n)
{
    int num=1;
    for(int i=0;i<n;i++)num*=10;
    return num;
}
int serch(int n,int maxe,int now,int wai)
{
    int va,val=0;
    if(now==n)return 0;
    for(int i=now;i<n;i++){
        if(wai+wait[i]<maxe){
            Wa=wai+wait[i];
            va=serch(n,maxe,i+1,wai+wait[i])+value[i];
            if(va>val){
                val=va;
                wain=Wa;

            }
            else if(va==val&&Wa<wain)wain=Wa;
        }
        else if(wai+wait[i]==maxe){
            Wa=wai+wait[i];
            return value[i];
        }
    }
    return val;
}
int main()
{
    int n,wa,now=1,point,val=0,wA;
    string str;
    while(cin>>wa&&wa!=0){
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>str;
            wait[i]=0;value[i]=0;
            for(int j=0;;j++){
                if(str[j]==','){
                    for(int k=0;k<j;k++)value[i]+=(str[k]-'0')*Power(j-k-1);
                    point=j;
                }
                if(str[j]=='\0'){
                    for(int k=point+1;k<j;k++)wait[i]+=(str[k]-'0')*Power(j-k-1);
                    break;
                }
            }
        }
        for(int i=0;i<n;i++){
            point=serch(n,wa,i,0);
            if(n==1){
                    point=value[0];
                    wA=wait[0];
            }
            else if(val<point){
                val=point;
                wA=wain;
            }
            else if(point==val&&wA>wain)wA=wain;
        }
        cout<<"Case "<<now<<":\n"<<val<<endl<<wA<<endl;
        now++;val=0;

    }
}