#include <iostream>
#include <stdio.h>

void update(int *dst, int src) {
	if (*dst < src) *dst = src;
	return;
}

int main() {
	for (int cnt = 1; 1; cnt++) {
		// 入力
		int W, N, Value[1000], Weight[1000];
		std::cin >> W;
		if (W == 0) return 0;
		std::cin >> N;
		for (int i = 0; i < N; i++) {
			scanf("%d,%d", &Value[i], &Weight[i]);
		}
		// 演算
		int dp[1001][1001];
		for (int i = 0; i <= W; i++) {
			dp[0][i] = 0;
		}
		for (int i = 0; i < N; i++) {
			for (int j = 0; j <= W; j++) {
				update(&dp[i + 1][j], dp[i][j]);
				if (j + Weight[i] <= W) {
					update(&dp[i + 1][j + Weight[i]], dp[i][j] + Value[i]);
				}
			}
		}
		// 出力
		std::cout << "Case " << cnt << ":" << std::endl;
		int MaxValue = 0, MaxIndex = 0;
		for (int i = 0; i <= W; i++) {
			if (MaxValue < dp[N][i]) {
				MaxValue = dp[N][i];
				MaxIndex = i;
			}
		}
		std::cout << MaxValue << std::endl;
		std::cout << MaxIndex << std::endl;
	}
}