#include using namespace std; int w[105],v[105],dp[105][1005],x[105],vis[105][1005]; int main() { int t,n,m,i,j,op=1; scanf("%d",&t); while(t--){ scanf("%d%d",&m,&n); int z=0; for(i=1;i<=n;i++){ scanf("%d%d",&v[i],&w[i]); if(!w[i]) z+=v[i]; } if(!m&&z){ printf("Case #%d:\n%d 0\n",op++,z); int zz=0; for(i=1;i<=n;i++){ if(!w[i]&&v[i]){ if(zz) printf(" "); printf("%d",i); zz=1; } } puts(""); continue; } if(!n||!m){ printf("Case #%d:\n0 0\n",op++); continue; } memset(dp,0,sizeof(dp)); memset(x,0,sizeof(x)); memset(vis,0,sizeof(vis)); int cnt=0; for(i=1;i<=n;i++){ for(j=0;j<=m;j++){ dp[i][j]=dp[i-1][j]; if(j>=w[i]&&dp[i][j]0;i--) if(vis[i][V]) x[i]=1,cnt+=w[i],V-=w[i]; printf("Case #%d:\n%d %d\n",op++,dp[n][m],cnt); if(cnt){ j=0; for(i=1;i<=n;i++){ if(!x[i]) continue; if(j) printf(" "); printf("%d",i); j=1; } puts(""); } } return 0; }