//https://ac.nowcoder.com/acm/contest/1042/C
#include<bits/stdc++.h>
#include<unordered_map>
#include<array>
#define ll long long
#define ull unsigned long long
#define all(a) a.begin(),a.end()
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const double eps = 1e-8;
const ll mod = 2147483648;
const int N = 1e5 + 5;
int n, m, tot;
int a[N], b[N], dp[21][900], last[201][21][900];
//dp[i][j] : 选i个人,a,b差值为j时 a+b的最大值
//last[i][j][k] : 前i个人选j个人,并且选了第i个人,差值为k是否存在这种情况(下方代码直接赋值成了i)
void solve()
{
while (cin >> n >> m, n && m)
{
for (int i = 1; i <= n; i++)
cin >> a[i] >> b[i];
memset(dp, -inf, sizeof dp);
dp[0][400] = 0;//差值可能为负,将所有值先加上一个maxx(此处为400)
memset(last, 0, sizeof last);
for (int i = 1; i <= n; i++)
{
for (int j = min(i, m); j >= 1; j--)
{
for (int k = 0; k <= 800; k++)
{
if (k - (a[i] - b[i]) >= 0)
{
if (dp[j - 1][k - (a[i] - b[i])] < 0)
continue;
if (dp[j][k] < dp[j - 1][k - (a[i] - b[i])] + a[i] + b[i])
{
dp[j][k] = dp[j - 1][k - (a[i] - b[i])] + a[i] + b[i];
last[i][j][k] = i;
}
}
}
}
}
int ans = -inf, id = 0;//差值为id
for (int i = 0; i <= 400 && ans < 0; i++)//找最终a+b的值是多少,优先按差值找,其次按a+b的值找
{
ans = dp[m][400 + i];
id = i;
if (dp[m][400 - i] > ans)
{
ans = dp[m][400 - i];
id = -i;
}
}
int aa = (ans + id) / 2;
int bb = (ans - id) / 2;
set<int> st;//存放选择的路径(人)
id = 400 + id;
int num = m;
for (int i = n; i >= 1; i--)
{
if (last[i][num][id])
{
st.insert(i);
num--;
id -= a[i] - b[i];
}
}
cout << "Jury #" << ++tot << '\n';
cout << "Best jury has value " << aa << " for prosecution and value " << bb << " for defence:" << '\n';
for (auto it : st)
cout << ' ' << it;
cout << '\n' << '\n';
}
}
signed main()
{
IOS;
int t = 1;
//cin >> t;
while (t--)
solve();
return 0;
}