#include <algorithm>
#include <iostream>
using namespace std;

struct out{
    int rank; //0:金牌总数   1奖牌总数  2金牌人口比  3奖牌人口比
    int type;//1金牌总数   2奖牌总数  3金牌人口比  4奖牌人口比
};

//国家结构体
struct country{
    int numb; //国家号
    int glod; //金牌总数
    int sum;  //奖牌总数
    double person;  //人口数量,为什么用double类型,因为后续初始化时g_p=glod/person; 若glod和person都是整数,则运算结果也是整数,导致丢失精度
    double g_p;  //金牌人口比例
    double s_p;  //奖牌人口比例
    out os[4];   //用来存储四种排名方式下,自己的排名;
};



//cmp方法:用于对每个国家中os数组进行排序(不同方式下的rank从小到大排)
bool cmp(const out& a,const out& b){   // 如果使用stable_sort()排序,参数一定要有const修饰
    if(a.rank==b.rank){
        return a.type<b.type;
    }
    return a.rank<b.rank;
}

//按金牌数
bool comparator01(country& a,country& b){
    return a.glod>b.glod;
}
//按奖牌数
bool comparator02(country& a,country& b){
    return a.sum>b.sum;
}
//按金牌人口比例
bool comparator03(country& a,country& b){
    return a.g_p>b.g_p;
}
//按将牌人口比例
bool comparator04(country& a,country& b){
    return a.s_p>b.s_p;
}

int main() {
    int n, m;   
    while (cin >> n >> m) {
        country c[n];//国家结构体数组
        int numb[m];//M个国家号
		//初始化每个国家的信息
        for(int i=0;i<n;i++){
            cin>>c[i].glod >>c[i].sum >>c[i].person;
            c[i].g_p=c[i].glod/c[i].person;
            c[i].s_p=c[i].sum/c[i].person;
            c[i].numb=i;
        }
	  //初始化
        for(int i=0;i<m;i++){
            cin>>numb[i];
        }
		//按金牌数排序
        sort(c, c+n,comparator01);
	  //将该排名方式下,每个国家的位次存进os数组
        c[0].os[0].rank=1;
        c[0].os[0].type = 1;
        for(int i=1;i<n;i++){
		  //并列名词要特殊处理;若前两个国家并列第1,那么下个国家就是第3名,而不是第2;
            if(c[i].glod==c[i-1].glod){   
                c[i].os[0].rank=c[i-1].os[0].rank;
            }else {
                c[i].os[0].rank=i+1;
            }
            c[i].os[0].type=1;
        }    
	  
	  //按奖牌数排序
        sort(c, c+n,comparator02);
        c[0].os[1].rank=1;
        c[0].os[1].type = 2;
        for(int i=1;i<n;i++){
            if(c[i].sum==c[i-1].sum){
                c[i].os[1].rank=c[i-1].os[1].rank;
            }else {
                c[i].os[1].rank=i+1;
            }
            c[i].os[1].type=2;
        }   
	  //按金牌人口比例排序
        sort(c, c+n,comparator03);
        c[0].os[2].rank=1;
        c[0].os[2].type = 3;
        for(int i=1;i<n;i++){
            if(c[i].g_p==c[i-1].g_p){
                c[i].os[2].rank=c[i-1].os[2].rank;
            }else {
                c[i].os[2].rank=i+1;
            }
            c[i].os[2].type=3;
        }  
	  //按奖牌人口比例排序
        sort(c, c+n,comparator04);
        c[0].os[3].rank=1;
        c[0].os[3].type = 4;
        for(int i=1;i<n;i++){
            if(c[i].s_p==c[i-1].s_p){
                c[i].os[3].rank=c[i-1].os[3].rank;
            }else {
                c[i].os[3].rank=i+1;
            }
            c[i].os[3].type=4;
        }    

		
        for(int j=0;j<m;j++){
            for(int i=0;i<n;i++){
			  //对题中给的M个国家号对应的国家结构体中的os进行排序
                if(c[i].numb==numb[j]){
                    stable_sort(c[i].os, c[i].os+4, cmp);
				  //排完序后,索引为0 的位次就是最靠前的位次,以及其对应的排名方式;
                    cout<<c[i].os[0].rank<<":"<<c[i].os[0].type<<endl;
                }
            }
        }

        cout<<"\n";
    }

}