#include <iostream>
#include <algorithm>
#include <string.h>
#include <functional>
using namespace std;
struct student{
char id[100];//学号
char name[100];//名字
int grade;//成绩
}a[555555];
//因为题中有大体三种排序方式,所以三个bool,三种排序
bool cmp1(student a,student b){
int t;
t=strcmp(a.id,b.id);
if(t<0)
return 1;
else
return 0;//学号不可能相等
}
bool cmp2(student a,student b){
int t;
t=strcmp(a.name,b.name);
if(t==0)
{
int p=strcmp(a.id,b.id);
{
if(p<0)
return 1;//即按从小到大的顺序排序
}
}
else if(t<0)
{
return 1;
}
return 0;
}
bool cmp3(student a,student b){
int s=0;
if(a.grade==b.grade)
{
s=strcmp(a.id,b.id);
if(s>0)
return 0;
else
return 1;
}
return a.grade<b.grade;
}
int main()
{
int n,c;
int m=0;
while(cin>>n>>c&&n)
{
m++;
for(int i=0;i<n;i++)
cin>>a[i].id>>a[i].name>>a[i].grade;
cout<<"Case"<<" "<<m<<":"<<endl;
if(c==1)
{
sort(a,a+n,cmp1);
}
if(c==2)
{
sort(a,a+n,cmp2);
}
if(c==3)
{
sort(a,a+n,cmp3);
}
for(int i=0;i<n;i++)
{
cout<<a[i].id<<" "<<a[i].name<<" "<<a[i].grade<<endl;
}
}
return 0;
}