#include<bits/stdc++.h>
using namespace std;
struct SinhVien{
string name, lop, date;
float GPA;
int id;
};
void input(SinhVien& A){
cin.ignore();
getline(cin, A.name);
getline(cin, A.lop);
getline(cin, A.date);
cin>>A.GPA;
}
void nhap(SinhVien ds[], int N){
for(int i=0; i<N; i++){
ds[i].id=i+1;
input(ds[i]);
}
}
void name(string s){
for(int i=0; i<s.length(); i++){
s[i] = tolower(s[i]);
}
vector<string>v;
stringstream ss(s);
string token;
while(ss>>token){
v.push_back(token);
}
int n = v.size();
for(int i=0; i<n; i++){
v[i][0] = toupper(v[i][0]);
}
for(int i=0; i<n; i++){
cout<<v[i]<<" ";
}
}
void sapxep(SinhVien ds[], int N){
for(int i=0; i<N; i++){
int max=i;
for(int j=i+1; j<N; j++){
if(ds[j].GPA > ds[max].GPA){
max=j;
}
}
SinhVien temp=ds[i];
ds[i]=ds[max];
ds[max]=temp;
}
}
void in(SinhVien ds[], int N){
for(int i=0; i<N; i++){
if(ds[i].date[1]=='/') ds[i].date.insert(0,"0");
if(ds[i].date[4]=='/') ds[i].date.insert(3,"0");
string s;
if(ds[i].id<=9) s="B20DCCN00";
else s="B20DCCN0";
cout<<s<<ds[i].id<<" ";
name(ds[i].name);
cout<<ds[i].lop<<" ";
cout<<ds[i].date<<" ";
cout<<fixed<<setprecision(2)<<ds[i].GPA<<"\n";
}
}
int main(){
struct SinhVien ds[50];
int N;
cin >> N;
nhap(ds, N);
sapxep(ds,N);
in(ds, N);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IFNpbmhWaWVuewoJc3RyaW5nIG5hbWUsIGxvcCwgZGF0ZTsKCWZsb2F0IEdQQTsKCWludCBpZDsKfTsKdm9pZCBpbnB1dChTaW5oVmllbiYgQSl7CgljaW4uaWdub3JlKCk7CglnZXRsaW5lKGNpbiwgQS5uYW1lKTsKCWdldGxpbmUoY2luLCBBLmxvcCk7CglnZXRsaW5lKGNpbiwgQS5kYXRlKTsKCWNpbj4+QS5HUEE7Cn0Kdm9pZCBuaGFwKFNpbmhWaWVuIGRzW10sIGludCBOKXsKCWZvcihpbnQgaT0wOyBpPE47IGkrKyl7CgkJZHNbaV0uaWQ9aSsxOwoJCWlucHV0KGRzW2ldKTsKCX0KfQp2b2lkIG5hbWUoc3RyaW5nIHMpewoJZm9yKGludCBpPTA7IGk8cy5sZW5ndGgoKTsgaSsrKXsKCQlzW2ldID0gdG9sb3dlcihzW2ldKTsKCX0KCXZlY3RvcjxzdHJpbmc+djsKCXN0cmluZ3N0cmVhbSBzcyhzKTsKCXN0cmluZyB0b2tlbjsKCXdoaWxlKHNzPj50b2tlbil7CgkJdi5wdXNoX2JhY2sodG9rZW4pOwoJfQoJaW50IG4gPSB2LnNpemUoKTsKCWZvcihpbnQgaT0wOyBpPG47IGkrKyl7CgkJdltpXVswXSA9IHRvdXBwZXIodltpXVswXSk7Cgl9Cglmb3IoaW50IGk9MDsgaTxuOyBpKyspewoJICAgIGNvdXQ8PHZbaV08PCIgIjsKICAgIH0KfQp2b2lkIHNhcHhlcChTaW5oVmllbiBkc1tdLCBpbnQgTil7CiAgICBmb3IoaW50IGk9MDsgaTxOOyBpKyspewogICAgCWludCBtYXg9aTsKICAgIAlmb3IoaW50IGo9aSsxOyBqPE47IGorKyl7CiAgICAJCWlmKGRzW2pdLkdQQSA+IGRzW21heF0uR1BBKXsKICAgIAkJICAgIG1heD1qOwoJCQl9CgkJfQoJCVNpbmhWaWVuIHRlbXA9ZHNbaV07CgkJZHNbaV09ZHNbbWF4XTsKCQlkc1ttYXhdPXRlbXA7Cgl9Cn0Kdm9pZCBpbihTaW5oVmllbiBkc1tdLCBpbnQgTil7Cglmb3IoaW50IGk9MDsgaTxOOyBpKyspewoJCWlmKGRzW2ldLmRhdGVbMV09PScvJykgICBkc1tpXS5kYXRlLmluc2VydCgwLCIwIik7CgkJaWYoZHNbaV0uZGF0ZVs0XT09Jy8nKSAgIGRzW2ldLmRhdGUuaW5zZXJ0KDMsIjAiKTsKCQlzdHJpbmcgczsKCQlpZihkc1tpXS5pZDw9OSkgICBzPSJCMjBEQ0NOMDAiOwoJCWVsc2UgICAgICBzPSJCMjBEQ0NOMCI7CgkJY291dDw8czw8ZHNbaV0uaWQ8PCIgIjsKCQluYW1lKGRzW2ldLm5hbWUpOwogICAgICAgIGNvdXQ8PGRzW2ldLmxvcDw8IiAiOwogICAgICAgIGNvdXQ8PGRzW2ldLmRhdGU8PCIgIjsKICAgICAgICBjb3V0PDxmaXhlZDw8c2V0cHJlY2lzaW9uKDIpPDxkc1tpXS5HUEE8PCJcbiI7Cgl9Cn0KaW50IG1haW4oKXsKICAgIHN0cnVjdCBTaW5oVmllbiBkc1s1MF07CiAgICBpbnQgTjsKICAgIGNpbiA+PiBOOwogICAgbmhhcChkcywgTik7CiAgICBzYXB4ZXAoZHMsTik7CiAgICBpbihkcywgTik7CiAgICByZXR1cm4gMDsKfQ==