#include <stdio.h>
#include <stdlib.h>

typedef struct {
	int id;
	int ac;
	int wa[ 11 ];
	int time;
} Data;

Data data[ 51 ];

int compare( const void *a, const void *b ) {
	Data d1 = *(Data *)a, d2 = *(Data *)b;
	if ( d1.ac > d2.ac )
		return -1;
	else if ( d1.ac < d2.ac )
		return 1;
	else
		if ( d1.time < d2.time )
			return -1;
		else if ( d1.time > d2.time )
			return 1;
		else
			return d2.id - d1.id;
}

int main( void ) {
	int i, T, R;

	while ( scanf( "%*d %d %*d %d", &T, &R ), T ) {
		memset( data + 1, 0, sizeof(Data) * 50 );
		for ( i = 1; i <= T; i++ )
			data[ i ].id = i;

		while ( R-- ) {
			int m, t, p, j;

			scanf( "%d %d %d %d", &m, &t, &p, &j );

			if ( j )
				data[ t ].wa[ p ]++;
			else {
				data[ t ].ac++;
				data[ t ].time += m + data[ t ].wa[ p ] * 20;
			}
		}

		qsort( data + 1, T, sizeof(Data), &compare );

		for ( i = 1; i <= T; i++ )
			printf( "%d%c", data[ i ].id, i == T ? '\n' : data[ i ].ac == data[ i + 1 ].ac && data[ i ].time == data[ i + 1 ].time ? '=' : ',' );
	}

	return 0;
}