#include <cstdio>
#include <algorithm>
using namespace std;

// 入力
int W, n;
int v[1001], w[1001];

int dp[1001][1001];
int ans_weight;

void solve(){
    // 価値の最大値を求める
    for(int i=0 ; i < n ; i++ ){
        for(int j=0 ; j <= W ; j++ ){
            if( j < w[i] ){
                dp[i+1][j] = dp[i][j];
            }else{
                dp[i+1][j] = max( dp[i][j] , dp[i][j-w[i]] + v[i] );
            }
        }
    }
    // 価値の最大値dp[n][W]となる最小の重さの総和を求める
    for(int j=0 ; j <= W ; j++ ){
        if( dp[n][j] == dp[n][W] ){
            ans_weight = j;
            break;
        }
    }
}

int main(){
    for(int t=1 ; scanf("%d", &W) , W ; t++ ){
        // 配列の初期化
        for(int i=0 ; i < 1001 ; i++ ){
            for(int j=0 ; j < 1001 ; j++ ){
                dp[i][j] = 0;
            }
        }
        
        scanf("%d", &n);
        for(int i=0 ; i < n ; i++ ){
            scanf("%d,%d", &v[i], &w[i]);
        }
        solve();
        printf("Case %d:\n", t);
        printf("%d\n%d\n", dp[n][W], ans_weight );
    }
}