/*坑点:人数可能为0!!!*/
#include<iostream>
#include<string>
#include <vector>
#include <algorithm>
#include <vector>
using namespace std;
int N, M;
int gold, jp, people;
struct nation {
int id;
double gold_num;//金牌数
double jp_num;//奖牌数
double gpldbl;//金牌比例
double jpbl;//奖牌比例
int way;//最优的排名方法
int mingci;//最优排名方式下的排名
};
nation n;
int main() {
while (cin >> N >> M && (N >= M)) {
vector<nation> old_gj;
vector<nation> gj;
for (int i = 0; i < N; i++) {
cin >> gold >> jp >> people;
n.gold_num = gold;
n.jp_num = jp;
if (people == 0) {
if (gold == 0) n.gpldbl = 0;
else n.gpldbl = (double)gold / (double)people;
if (jp == 0) n.jpbl = 0;
else n.jpbl = (double)jp / (double)people;
} else {
n.gpldbl = (double)gold / (double)people;
n.jpbl = (double)jp / (double)people;
}
n.id = i;
old_gj.push_back(n);
}
int id;
for (int i = 0; i < M; i++) {
cin >> id;
gj.push_back(old_gj[id]);
}
//将每种排序方式都进行排序
vector<nation> way1 = gj;
vector<nation> way2 = gj;
vector<nation> way3 = gj;
vector<nation> way4 = gj;
sort(way1.begin(), way1.end(), [](const nation & a, const nation & b) {
return a.gold_num > b.gold_num;
});
sort(way2.begin(), way2.end(), [](const nation & a, const nation & b) {
return a.jp_num > b.jp_num;
});
sort(way3.begin(), way3.end(), [](const nation & a, const nation & b) {
return a.gpldbl > b.gpldbl;
});
sort(way4.begin(), way4.end(), [](const nation & a, const nation & b) {
return a.jpbl > b.jpbl;
});
int index = 0;
for (auto it = gj.begin(); it != gj.end(); it++) {
int i = (*it).id;
int min_way;
int min_no = M + 1;
bool flag1 = 0, flag2 = 0, flag3 = 0, flag4 = 0;
for (int k = 0; k < M; k++) {
if (way1[k].id == i) {
int j = k;
flag1 = 1;
while (j > 0 && way1[j].gold_num == way1[j - 1].gold_num) {
j--;
}
if (min_no > j + 1 || (min_no == j + 1 && min_way > 1)) {
min_no = j + 1;
min_way = 1;
}
}
if (way2[k].id == i) {
int j = k;
flag2 = 1;
while (j > 0 && way2[j].jp_num == way2[j - 1].jp_num) {
j--;
}
if (min_no > j + 1 || (min_no == j + 1 && min_way > 2)) {
min_no = j + 1;
min_way = 2;
}
}
if (way3[k].id == i) {
int j = k;
flag3 = 1;
while (j > 0 && way3[j].gpldbl == way3[j - 1].gpldbl) {
j--;
}
if (min_no > j + 1 || (min_no == j + 1 && min_way > 3)) {
min_no = j + 1;
min_way = 3;
}
}
if (way4[k].id == i) {
int j = k;
flag4 = 1;
while (j > 0 && way4[j].jpbl == way4[j - 1].jpbl) {
j--;
}
if (min_no > j + 1) {
min_no = j + 1;
min_way = 4;
}
}
if (flag1 && flag2 && flag3 && flag4) {
gj[index].mingci = min_no;
gj[index].way = min_way;
break;
}
}
gj[index].mingci = min_no;
gj[index].way = min_way;
index++;
}
for (int i = 0; i < M; i++) {
cout << gj[i].mingci << ":" << gj[i].way << endl;
}
cout << endl; //每组数据后加一个空行。
}
}
// 64 位输出请用 printf("%lld")