#include<iostream>
#include<cstring>
using namespace std;
int n,m,k,t;
int p[205],d[205];
int f[205][25][805];
int ans[205];
int main(){
while(scanf("%d%d",&n,&m)!=1,n||m){
k=0;
for(int i=1;i<=n;i++)scanf("%d%d",&p[i],&d[i]);
memset(f,0xcf,sizeof f);
f[0][0][400]=0;
for(int i=1;i<=n;i++){
for(int j=0;j<=m;j++){
for(int k=0;k<=800;k++){
f[i][j][k]=f[i-1][j][k];
int t=k-p[i]+d[i];
if(!j)continue;
if(t<0||t>800)continue;
f[i][j][k]=max(f[i][j][k],f[i-1][j-1][t]+p[i]+d[i]);
}
}
}
int v=0;
while(f[n][m][400+v]<0&&f[n][m][400-v])v++;
if(f[n][m][400-v]>f[n][m][400+v])v=400-v; else v=400+v;
int i=n,j=m;
while(j){
if(f[i][j][v]==f[i-1][j][v])i--;
else{
ans[++k]=i;
v-=(p[i]-d[i]);
i--,j--;
}
}
int D=0,P=0;
for(int i=1;i<=k;i++){
D+=d[ans[i]];
P+=p[ans[i]];
}
printf("Jury #%d\n",++t);
printf("Best jury has value %d for prosecution and value %d for defence:\n",P,D);
for(int i=k;i>=1;i--){
printf(" %d",ans[i]);
}
printf("\n\n");
}
return 0;
}