#include<stdio.h>
#include<stdlib.h>
typedef struct{
    int time;
    int number;
    int ans;
    int q[10];
}Data;
Data d[50];
int M, T, P, R;
int m, t, p, j;
void init(void){
    for(int i=0; i<50; i++){
        d[i].time=0;
        d[i].number=i;
        d[i].ans=0;
        for(int j=0; j<10; j++){
            d[i].q[j]=0;
        }
    }
}
int compare(const void *a, const void *b){
    Data c = *(Data *)a;
    Data d = *(Data *)b;
    if(c.ans > d.ans) return -1;
    else if(d.ans > c.ans) return 1;
    else{
        if(c.time > d.time) return 1;
        else if(d.time > c.time) return -1;
        else{
            if(c.number > d.number) return -1;
            else return 1;
        }
    }
}
int main(void){
    while(1){
        init();
        scanf("%d%d%d%d",&M,&T,&P,&R);
        if(M==0 && T==0 && P==0 && R==0) break;
        for(int i=0; i<R; i++){
            scanf("%d%d%d%d",&m,&t,&p,&j);
            if(j==0){
                d[t-1].time+=(m+d[t-1].q[p-1]*20);
                d[t-1].ans++;
            }
            else{
                d[t-1].q[p-1]++;
            }
        }
        qsort(d,T,sizeof(Data),compare);
        for(int i=0; i<T-1; i++){
            printf("%d",d[i].number+1);
            if(d[i].time==d[i+1].time && d[i].ans==d[i+1].ans) printf("=");
            else printf(",");
        }
        printf("%d\n",d[T-1].number+1);
    }
    return 0;
}

