#include <iostream>
#include <queue>
#include <cstdio>
using namespace std;
int C;
int cmp(const char a[], const char b[])//比较字符串大小的函数
{
for (int i = 0; i < 10; i++)
{
if (a[i] == '\0' || b[i] == '\0')
break;
if (a[i] == b[i])
{
if (a[i] != '\0')
continue;
else
break;
}
else if (a[i] > b[i])
{
return 1;
}
else
return -1;
}
return 0;
}
struct node//结构体定义
{
char num[10];
char name[10];
int score;
bool operator < (const struct node& a)const
{
if (C == 1)
{
return (cmp(num, a.num) == 1);
}
else if (C == 2)
{
if (cmp(name, a.name) == 0)
{
return (cmp(num, a.num) == 1);
}
else if (cmp(name, a.name) == 1)
return true;
else return false;
}
else if (C == 3)
{
if (score == a.score)
return (cmp(num, a.num) == 1);
else
return score > a.score;
}
}
};
int main()
{
priority_queue<struct node> q;
int N;
cin >> N >> C;
for (int i = 0; i < N; i++)
{
struct node t_node;
cin >> t_node.num >> t_node.name >> t_node.score;
q.push(t_node);
}
while (!q.empty())
{
//cout << q.top().num << ' ' << q.top().name << ' ' << q.top().score << endl;
//用cout会超时
printf("%s %s %d\n", q.top().num, q.top().name, q.top().score);
q.pop();
}
return 0;
}