#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int W,N,w[1001],v[1001];
int memo[1001][1001],ans2;
int func(int i,int j){
    if(i==N)return 0;
    if(memo[i][j]!=-1)return memo[i][j];
    if(j+w[i]>W)return func(i+1,j);
    int res;
    if(j<W){
        ans2=max(ans2,j);
    }
    res=max(func(i+1,j),func(i+1,j+w[i])+v[i]);
    return memo[i][j]=res;
}
int main(){
    int ans,cou=0,hinan;
    while(cin>>W,W){
        cin>>N;
        fill(memo[0],memo[0]+1001*1001,-1);
        for(int i=0;i<N;i++){
            scanf("%d,%d",&v[i],&w[i]);
        }
        ans=func(0,0);
        hinan=ans2;
        for(int i=0;i<N;i++){
            if(w[i]==ans2){
                for(int j=0;j<N;j++){
                    if(v[j]==ans-v[i])hinan=w[j];
                }
                break;
            }
        }
        cout<<ans<<endl<<ans2+hinan<<endl;
    }
}