/*思想不难,排名不用排序,有国家指标比你高,你的排名就++
很坑的是对于输入人口为0的处理:奖牌为0,比率也为0;奖牌不为0,比率无穷大
*/
#include<iostream>
#include<limits>
using namespace std;

struct country{
  double gold,sum,population;//金牌、总数、人口
  double goldratio ,sumratio;//金牌率、奖牌率
};

country s[100];

int main(){
    int n,m;
    while(cin>>n>>m){
        for(int i=0;i<n;i++){//输入数据,计算金牌率和奖牌率
            cin>>s[i].gold>>s[i].sum>>s[i].population;
            if(s[i].gold==0&&s[i].population==0)s[i].goldratio=0;//均为0,比率为0
            if(s[i].sum==0&&s[i].population==0)s[i].sumratio=0;
            if(s[i].gold!=0&&s[i].population==0)s[i].goldratio=numeric_limits<double>::max();//只有人口为0,比率无穷大
            if(s[i].sum!=0&&s[i].population==0)s[i].sumratio=numeric_limits<double>::max();
            if(s[i].population!=0){
                s[i].goldratio=s[i].gold/s[i].population;
                s[i].sumratio=s[i].sum/s[i].population;
            }
        }
        for(int j=1;j<=m;j++){//输入查询国家,计算排名
            int find,rank[4]={1,1,1,1};//初始排名默认为1
            cin>>find;
            for(int i=0;i<n;i++){//凡是有某国家指标比其高的,对应排名++
                if(s[i].gold>s[find].gold)rank[0]++;
                if(s[i].sum>s[find].sum)rank[1]++;
                if(s[i].goldratio>s[find].goldratio)rank[2]++;
                if(s[i].sumratio>s[find].sumratio)rank[3]++;
            }
          
            int bestrank=n+1,rankmethod;//最佳排名、排名方式
           for(int i=0;i<4;i++){//找到最小的排名并记录排名方式
               if(rank[i]<bestrank){
                   bestrank=rank[i];
                   rankmethod=i+1;//注意排名方式是1~4,需偏移+1
               }    
            }
           cout<<bestrank<<":"<<rankmethod<<endl;
        }
           cout<<endl;
    }
}