#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct Node {
int name;
int pen;
int ac;
vector<int> wa;
Node(int n, int P) : name(n), pen(0), ac(0), wa(P, 0) { }
// 0origin
void accept(int i, int t) {
ac++;
pen += wa[i] * 20 + t;
}
void wrong(int i) {
wa[i]++;
}
bool operator <(const Node & n) const {
if(ac != n.ac) return ac > n.ac;
if(pen != n.pen) return pen < n.pen;
return name > n.name;
}
bool same(const Node & n) const {
return ac == n.ac && pen == n.pen;
}
};
int main() {
for(int M, T, P, R; cin >> M >> T >> P >> R, M || T || P || R; ) {
vector<Node> vec;
for(int i = 0; i < T; i++) vec.push_back(Node(i+1, P));
for(int i = 0; i < R; i++) {
int m, t, p, j; cin >> m >> t >> p >> j;
t--;
p--;
if(j == 0) {
vec[t].accept(p, m);
}
else {
vec[t].wrong(p);
}
}
sort(vec.begin(), vec.end());
cout << vec[0].name;
for(int i = 1; i < (int)vec.size(); i++) {
if(vec[i - 1].same(vec[i])) cout << "=";
else cout << ",";
cout << vec[i].name;
}
cout << endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBOb2RlIHsKICAgIGludCBuYW1lOwogICAgaW50IHBlbjsKICAgIGludCBhYzsKICAgIHZlY3RvcjxpbnQ+IHdhOwogICAgTm9kZShpbnQgbiwgaW50IFApIDogbmFtZShuKSwgcGVuKDApLCBhYygwKSwgd2EoUCwgMCkgeyB9CiAgICAvLyAwb3JpZ2luCiAgICB2b2lkIGFjY2VwdChpbnQgaSwgaW50IHQpIHsKICAgICAgICBhYysrOwogICAgICAgIHBlbiArPSB3YVtpXSAqIDIwICsgdDsKICAgIH0KCiAgICB2b2lkIHdyb25nKGludCBpKSB7CiAgICAgICAgd2FbaV0rKzsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yIDwoY29uc3QgTm9kZSAmIG4pIGNvbnN0IHsKICAgICAgICBpZihhYyAhPSBuLmFjKSByZXR1cm4gYWMgPiBuLmFjOwogICAgICAgIGlmKHBlbiAhPSBuLnBlbikgcmV0dXJuIHBlbiA8IG4ucGVuOwogICAgICAgIHJldHVybiBuYW1lID4gbi5uYW1lOwogICAgfQoKICAgIGJvb2wgc2FtZShjb25zdCBOb2RlICYgbikgY29uc3QgewogICAgICAgIHJldHVybiBhYyA9PSBuLmFjICYmIHBlbiA9PSBuLnBlbjsKICAgIH0KfTsKCmludCBtYWluKCkgewogICAgZm9yKGludCBNLCBULCBQLCBSOyBjaW4gPj4gTSA+PiBUID4+IFAgPj4gUiwgTSB8fCBUIHx8IFAgfHwgUjsgKSB7CiAgICAgICAgdmVjdG9yPE5vZGU+IHZlYzsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgVDsgaSsrKSB2ZWMucHVzaF9iYWNrKE5vZGUoaSsxLCBQKSk7CiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IFI7IGkrKykgewogICAgICAgICAgICBpbnQgbSwgdCwgcCwgajsgY2luID4+IG0gPj4gdCA+PiBwID4+IGo7CiAgICAgICAgICAgIHQtLTsKICAgICAgICAgICAgcC0tOwogICAgICAgICAgICBpZihqID09IDApIHsKICAgICAgICAgICAgICAgIHZlY1t0XS5hY2NlcHQocCwgbSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2ZWNbdF0ud3JvbmcocCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgc29ydCh2ZWMuYmVnaW4oKSwgdmVjLmVuZCgpKTsKICAgICAgICBjb3V0IDw8IHZlY1swXS5uYW1lOwogICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPCAoaW50KXZlYy5zaXplKCk7IGkrKykgewogICAgICAgICAgICBpZih2ZWNbaSAtIDFdLnNhbWUodmVjW2ldKSkgY291dCA8PCAiPSI7CiAgICAgICAgICAgIGVsc2UgY291dCA8PCAiLCI7CiAgICAgICAgICAgIGNvdXQgPDwgdmVjW2ldLm5hbWU7CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgIH0KfQo=
MzAwIDEwIDggNQo1MCA1IDIgMQo3MCA1IDIgMAo3NSAxIDEgMAoxMDAgMyAxIDAKMTUwIDMgMiAwCjI0MCA1IDUgNwo1MCAxIDEgMAo2MCAyIDIgMAo3MCAyIDMgMAo5MCAxIDMgMAoxMjAgMyA1IDAKMTQwIDQgMSAwCjE1MCAyIDQgMQoxODAgMyA1IDQKMTUgMiAyIDEKMjAgMiAyIDEKMjUgMiAyIDAKNjAgMSAxIDAKMTIwIDUgNSA0CjE1IDUgNCAxCjIwIDUgNCAwCjQwIDEgMSAwCjQwIDIgMiAwCjEyMCAyIDMgNAozMCAxIDEgMAo0MCAyIDEgMAo1MCAyIDIgMAo2MCAxIDIgMAoxMjAgMyAzIDIKMCAxIDEgMAoxIDIgMiAwCjMwMCA1IDggMAowIDAgMCAw
300 10 8 5
50 5 2 1
70 5 2 0
75 1 1 0
100 3 1 0
150 3 2 0
240 5 5 7
50 1 1 0
60 2 2 0
70 2 3 0
90 1 3 0
120 3 5 0
140 4 1 0
150 2 4 1
180 3 5 4
15 2 2 1
20 2 2 1
25 2 2 0
60 1 1 0
120 5 5 4
15 5 4 1
20 5 4 0
40 1 1 0
40 2 2 0
120 2 3 4
30 1 1 0
40 2 1 0
50 2 2 0
60 1 2 0
120 3 3 2
0 1 1 0
1 2 2 0
300 5 8 0
0 0 0 0
3,1,5,10=9=8=7=6=4=2
2,1,3,4,5
1,2,3
5=2=1,4=3
2=1
1,2,3
5=4=3=2=1