def f(n,k): return 50*n+int(50*n/(0.8+0.2*k)) def PtoI(string): if string=="A":return 1 elif string=="B":return 2 elif string=="C":return 3 elif string=="D":return 4 elif string=="E":return 5 elif string=="F":return 6 elif string=="G":return 7 elif string=="H":return 8 elif string=="I":return 9 elif string=="J":return 10 elif string=="K":return 11 elif string=="L":return 12 elif string=="M":return 13 elif string=="N":return 14 elif string=="O":return 15 elif string=="P":return 16 elif string=="Q":return 17 elif string=="R":return 18 elif string=="S":return 19 elif string=="T":return 20 elif string=="U":return 21 elif string=="V":return 22 elif string=="W":return 23 elif string=="X":return 24 elif string=="Y":return 25 elif string=="Z":return 26 n = int(input()) L=[0]+[int(i) for i in input().split()] t=int(input()) A={}#名前:点数 AC=[1 for i in range(n+1)] for i in range(t): name,p = map(str,input().split()) #名前が始めて出てきた場合 if name not in A: A[name]=[0 for _ in range(n+1)]#問題数+1だけ確保 #何番目のACか確認して更新 k=AC[PtoI(p)] #print(name,"による問題",p,"(",PtoI(p),")の",k,"番目のAC") AC[PtoI(p)]=k+1 #print("AC:",AC) A[name][PtoI(p)]=f(L[PtoI(p)],k) #print(A) SUM=[] for v,k in zip(A.values(),A.keys()): v[0]=sum(v) #print("v:",v) #print("k:",k) SUM.append([v,k]) #print(SUM) #SUM.sort(key=lambda x:x[0][0])#合計が大きい順に並べ替え SUM.sort(reverse=True) #print(SUM) #print(SUM) for i in range(len(SUM)): print(i+1,SUM[i][1],end=" ") for j in range(1,len(SUM[i][0])): print(SUM[i][0][j],end=" ") print(SUM[i][0][0])