#include <iostream>
using namespace std;

struct equipo {
    int nro, submiss, soluts, ptos;
};

bool operator < (const equipo& eq1, const equipo& eq2) {
    if (eq1.ptos < eq2.ptos)
        return true;
    if (eq1.ptos == eq2.ptos) {
        if (eq1.soluts > eq2.soluts)
            return true;
        if (eq1.soluts == eq2.soluts) {
            if (eq1.submiss > eq2.submiss)
                return true;
            if (eq1.submiss == eq2.submiss && eq1.nro > eq2.nro)
                return true;
        }
    }
    return false;
}

void quicksort(equipo a[], int izq, int der) {
    int i = izq, j = der;
    equipo x = a[(izq+der)/2], temp;
    while (i <= j) {
        while (x < a[i]) i++;
        while (a[j] < x) j--;
        if (i <= j) {
            temp = a[i]; a[i] = a[j]; a[j] = temp;
            i++; j--;
        }
    }
    if (izq < j) quicksort(a, izq, j);
    if (i < der) quicksort(a, i, der);
}

int main() {
    int escen = 1, t, p, s, eq, ptos;
    char prob, calif;
    while (cin >> t >> p && !(t == 0 && p == 0)) {
        int problemas[p];
        for (char i = 0; i < p; i++) {
            cin >> ptos;
            problemas[i] = ptos;
        }
        cin >> s;
        equipo equipos[t];
        for (int i = 0; i < t; i++) {
            equipos[i].nro = i+1;
            equipos[i].submiss = 0;
            equipos[i].soluts = 0;
            equipos[i].ptos = 0;
        }
        for (int i = 0; i < s; i++) {
            cin >> eq >> prob >> calif;
            eq--;
            equipos[eq].submiss++;
            if (calif == 'A') {
                equipos[eq].soluts++;
                equipos[eq].ptos += problemas[prob-'A'];
            }
        }
        cout << escen++ << endl;
        quicksort(equipos, 0, t-1);
        for (int i = 0; i < t; i++)
            cout << equipos[i].nro << " " << equipos[i].ptos << endl;
    }
    return 0;
}

