#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;
}
CiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cnVjdCBTaW5oVmllbnsKCXN0cmluZyBuYW1lLCBsb3AsIGRhdGU7CglmbG9hdCBHUEE7CglpbnQgaWQ7Cn07CnZvaWQgaW5wdXQoU2luaFZpZW4mIEEpewoJY2luLmlnbm9yZSgpOwoJZ2V0bGluZShjaW4sIEEubmFtZSk7CglnZXRsaW5lKGNpbiwgQS5sb3ApOwoJZ2V0bGluZShjaW4sIEEuZGF0ZSk7CgljaW4+PkEuR1BBOwp9CnZvaWQgbmhhcChTaW5oVmllbiBkc1tdLCBpbnQgTil7Cglmb3IoaW50IGk9MDsgaTxOOyBpKyspewoJCWRzW2ldLmlkPWkrMTsKCQlpbnB1dChkc1tpXSk7Cgl9Cn0Kdm9pZCBuYW1lKHN0cmluZyBzKXsKCWZvcihpbnQgaT0wOyBpPHMubGVuZ3RoKCk7IGkrKyl7CgkJc1tpXSA9IHRvbG93ZXIoc1tpXSk7Cgl9Cgl2ZWN0b3I8c3RyaW5nPnY7CglzdHJpbmdzdHJlYW0gc3Mocyk7CglzdHJpbmcgdG9rZW47Cgl3aGlsZShzcz4+dG9rZW4pewoJCXYucHVzaF9iYWNrKHRva2VuKTsKCX0KCWludCBuID0gdi5zaXplKCk7Cglmb3IoaW50IGk9MDsgaTxuOyBpKyspewoJCXZbaV1bMF0gPSB0b3VwcGVyKHZbaV1bMF0pOwoJfQoJZm9yKGludCBpPTA7IGk8bjsgaSsrKXsKCSAgICBjb3V0PDx2W2ldPDwiICI7CiAgICB9Cn0Kdm9pZCBzYXB4ZXAoU2luaFZpZW4gZHNbXSwgaW50IE4pewogICAgZm9yKGludCBpPTA7IGk8TjsgaSsrKXsKICAgIAlpbnQgbWF4PWk7CiAgICAJZm9yKGludCBqPWkrMTsgajxOOyBqKyspewogICAgCQlpZihkc1tqXS5HUEEgPiBkc1ttYXhdLkdQQSl7CiAgICAJCSAgICBtYXg9ajsKCQkJfQoJCX0KCQlTaW5oVmllbiB0ZW1wPWRzW2ldOwoJCWRzW2ldPWRzW21heF07CgkJZHNbbWF4XT10ZW1wOwoJfQp9CnZvaWQgaW4oU2luaFZpZW4gZHNbXSwgaW50IE4pewoJZm9yKGludCBpPTA7IGk8TjsgaSsrKXsKCQlpZihkc1tpXS5kYXRlWzFdPT0nLycpICAgZHNbaV0uZGF0ZS5pbnNlcnQoMCwiMCIpOwoJCWlmKGRzW2ldLmRhdGVbNF09PScvJykgICBkc1tpXS5kYXRlLmluc2VydCgzLCIwIik7CgkJc3RyaW5nIHM7CgkJaWYoZHNbaV0uaWQ8PTkpICAgcz0iQjIwRENDTjAwIjsKCQllbHNlICAgICAgcz0iQjIwRENDTjAiOwoJCWNvdXQ8PHM8PGRzW2ldLmlkPDwiICI7CgkJbmFtZShkc1tpXS5uYW1lKTsKICAgICAgICBjb3V0PDxkc1tpXS5sb3A8PCIgIjsKICAgICAgICBjb3V0PDxkc1tpXS5kYXRlPDwiICI7CiAgICAgICAgY291dDw8Zml4ZWQ8PHNldHByZWNpc2lvbigyKTw8ZHNbaV0uR1BBPDwiXG4iOwoJfQp9CmludCBtYWluKCl7CiAgICBzdHJ1Y3QgU2luaFZpZW4gZHNbNTBdOwogICAgaW50IE47CiAgICBjaW4gPj4gTjsKICAgIG5oYXAoZHMsIE4pOwogICAgc2FweGVwKGRzLE4pOwogICAgaW4oZHMsIE4pOwogICAgcmV0dXJuIDA7Cn0=