#include <iostream>
#include <algorithm>
#define MAXN 1005
using namespace std;
struct node
{
bool p[21];
int sum;
int pre_sum[21];
int num_pro;
int team;
};
node _m[MAXN];
struct node_1
{
int k[4];
};
node_1 in[MAXN];
int test;
int num;
bool op(node a,node b);
void init();
bool op_1(node_1 a,node_1 b);
int main()
{
int i;
int j;
int team;
int pro;
int time;
int res;
//freopen("acm.acm","r",stdin);
cin>>num>>test;
for(i = 0; i < test; ++ i)
{
for(j = 0; j < 4; ++ j)
{
cin>>in[i].k[j];
}
}
sort(in,in+test,op_1);
init();
for(i = 0; i < test; ++ i)
{
team = in[i].k[0];
pro = in[i].k[1];
time = in[i].k[2];
res = in[i].k[3];
if(_m[team].p[pro] == false)
{
if(res == 0)
{
_m[team].pre_sum[pro] += 1200;
}
else
{
_m[team].sum += time;
_m[team].sum += _m[team].pre_sum[pro];
++ _m[team].num_pro;
_m[team].p[pro] = true;
}
}
}
sort(_m+1,_m+num+1,op);
for(i = 1; i < num; ++ i)
{
cout<<_m[i].team<<" ";
}
cout<<_m[i].team;
}
bool op_1(node_1 a,node_1 b)
{
if(a.k[2] < b.k[2])
return true;
return false;
}
bool op(node a,node b)
{
if(a.num_pro > b.num_pro)
{
return true;
}
else if(a.num_pro == b.num_pro)
{
if(a.sum < b.sum)
return true;
else if(a.sum == b.sum)
{
if(a.team < b.team)
return true;
else
return false;
}
else
return false;
}
else
return false;
}
void init()
{
int i;
int j;
for(i = 1; i <= num; ++ i)
{
for(j = 1; j < 21; ++ j)
{
_m[i].p[j] = false;
_m[i].pre_sum[j] = 0;
}
_m[i].team = i;
_m[i].sum = 0;
_m[i].num_pro = 0;
}
}