#include <bits/stdc++.h>
using namespace std;
const int base=400;
int f[205][25][805];
int p[205],d[205];
int main()
{
    int n,m,T=1;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        if(n==0&&m==0)  break;
        for(int i=1;i<=n;i++)   scanf("%d%d",&p[i],&d[i]);
        memset(f,-0x3f,sizeof f);
        f[0][0][base]=0;
        for(int i=1;i<=n;i++)
        {
            for(int j=0;j<=m;j++)
            {
                for(int k=0;k<=800;k++)
                {
                    int x=d[i]-p[i];
                    //不选
                    f[i][j][k]=max(f[i][j][k],f[i-1][j][k]);
                    //选
                    if(k-x<0||k-x>800)  continue;
                    if(j)  f[i][j][k]=max(f[i][j][k],f[i-1][j-1][k-x]+p[i]+d[i]);
                }
            }
        }
        int v=0;
        while(f[n][m][base+v]<0&&f[n][m][base-v]<0) v++;//找v
        if(f[n][m][base-v]>f[n][m][base+v]) v=base-v;//选择最佳方案。
        else v=base+v;
        int i=n,j=m,k=v,cnt=0,ans[205],ansd=0,ansp=0;
        while(j)
        {
            if(f[i][j][k]==f[i-1][j][k])//说明这个地方可以不选.
            {
                i--;
            }
            else
            {
                ansd+=d[i];
                ansp+=p[i];
                k-=d[i]-p[i];
                ans[cnt++]=i;
                i--;
                j--;
            }
        }
        printf("Jury #%d\n",T++);
        printf("Best jury has value %d for prosecution and value %d for defence:\n",ansp,ansd);
        for(int i=cnt-1;i>=0;i--)
        {
            printf(" %d",ans[i]);
        }
        printf("\n\n");
    }
    return 0;
}