#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

int main()
{
    for( int iii=1; ; ++iii ) {
        int w, n;
        cin >> w;
        if ( w == 0 )
            break;
        cin >> n;

        struct { int v, w; } item[1000] = {{0, 0}};
        for( int i=0; i<n; ++i ) {
            scanf( "%d,%d", &item[i+1].v, &item[i+1].w );
        }

        int dp[1002][1002] = {};

        int max_w = 0, max_v = 0;
        for( int ni=1; ni<n+1; ++ni ) {
            for( int wi=1; wi<w+1; ++wi ) {
                int const bef_ni = ni - 1;
                int const bef_wi = wi - item[ni].w;

                dp[ni][wi] = [&]() -> int {
                    if ( bef_wi >= 0 ) {
                        return max( dp[bef_ni][wi], dp[bef_ni][bef_wi] + item[ni].v );
                    } else {
                        return dp[bef_ni][wi];
                    }
                }();

                if ( dp[ni][wi] > max_v || ( dp[ni][wi] == max_v && wi < max_w ) ) {
                    max_v = dp[ni][wi];
                    max_w = wi;
                }
            }
        }

        cout << "Case " << iii << ":" << endl
             << max_v << endl
             << max_w << endl;
    }
}