//http://stackoverflow.com/a/15968507/1458030
#include <string>
#include <algorithm>
#include <iostream>
#include <sstream>
using namespace std;
struct row{string ID, name, rest;};
bool operator < (const row& r1, const row& r2)
{ return r1.name<r2.name;}
ostream &operator<<(ostream&o, const row&r)
{ return o<<r.ID<<'\t'<< r.name<<'\t'<< r.rest <<endl; }
int main()
{
stringstream fin,fout;
fin<< "5" << endl;
fin<< "2012019874\tZooadan Legeaf Coaa\tFemale\t65"<<endl;
fin<< "1111090909\tZuilia Perez\tFemale\t701" <<endl;
fin<< "2012019109\tProadan Legeaf Coaa\tFemale\t65"<<endl;
fin<< "2345019176\tTrroadan Legeaf\tFemale\t98" <<endl;
fin<< "2012019109\tAAroadan Legeaf Coaa\tFemale\t65"<<endl;
int x;
fin >> x; //this is the first number within ...
row *rows=new row[x];
for(int i=0;i<x;++i)
{
getline(fin, rows[i].ID, '\t'); // ID
getline(fin, rows[i].name, '\t'); // name
getline(fin, rows[i].rest );
}
std::sort(rows,rows+x);
fout << x << std::endl;
for(int i=0;i<x;++i)
fout<<rows[i];
delete []rows;
cout<<"Input:\n"<< fin.str()<<"\nOutput:\n"<< fout.str();
}
Ly9odHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xNTk2ODUwNy8xNDU4MDMwCiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxpb3N0cmVhbT4gIAojaW5jbHVkZSA8c3N0cmVhbT4gCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3Qgcm93e3N0cmluZyBJRCwgbmFtZSwgcmVzdDt9OwoKYm9vbCBvcGVyYXRvciA8IChjb25zdCByb3cmIHIxLCBjb25zdCByb3cmIHIyKSAKeyAgcmV0dXJuIHIxLm5hbWU8cjIubmFtZTt9IAoKb3N0cmVhbSAmb3BlcmF0b3I8PChvc3RyZWFtJm8sIGNvbnN0IHJvdyZyKQp7ICByZXR1cm4gbzw8ci5JRDw8J1x0Jzw8IHIubmFtZTw8J1x0Jzw8IHIucmVzdCA8PGVuZGw7IH0gIAoKaW50IG1haW4oKQp7IAogIHN0cmluZ3N0cmVhbSBmaW4sZm91dDsKICBmaW48PCAiNSIgIDw8IGVuZGw7CiAgZmluPDwgIjIwMTIwMTk4NzRcdFpvb2FkYW4gTGVnZWFmIENvYWFcdEZlbWFsZVx0NjUiPDxlbmRsOwogIGZpbjw8ICIxMTExMDkwOTA5XHRadWlsaWEgUGVyZXpcdEZlbWFsZVx0NzAxIiAgICAgIDw8ZW5kbDsKICBmaW48PCAiMjAxMjAxOTEwOVx0UHJvYWRhbiBMZWdlYWYgQ29hYVx0RmVtYWxlXHQ2NSI8PGVuZGw7CiAgZmluPDwgIjIzNDUwMTkxNzZcdFRycm9hZGFuIExlZ2VhZlx0RmVtYWxlXHQ5OCIgICAgPDxlbmRsOwogIGZpbjw8ICIyMDEyMDE5MTA5XHRBQXJvYWRhbiBMZWdlYWYgQ29hYVx0RmVtYWxlXHQ2NSI8PGVuZGw7CgoKICBpbnQgeDsgCiAgZmluID4+IHg7IC8vdGhpcyBpcyB0aGUgZmlyc3QgbnVtYmVyIHdpdGhpbiAuLi4gICAKICByb3cgKnJvd3M9bmV3IHJvd1t4XTsKICBmb3IoaW50IGk9MDtpPHg7KytpKQogIHsKICAgIGdldGxpbmUoZmluLCByb3dzW2ldLklELCAgICdcdCcpOyAvLyBJRAogICAgZ2V0bGluZShmaW4sIHJvd3NbaV0ubmFtZSwgJ1x0Jyk7IC8vIG5hbWUKICAgIGdldGxpbmUoZmluLCByb3dzW2ldLnJlc3QgICAgICApOyAKICB9CiAgc3RkOjpzb3J0KHJvd3Mscm93cyt4KTsKICBmb3V0IDw8IHggPDwgc3RkOjplbmRsOwogIGZvcihpbnQgaT0wO2k8eDsrK2kpCiAgICAgIGZvdXQ8PHJvd3NbaV07IAogIGRlbGV0ZSBbXXJvd3M7CiAgY291dDw8IklucHV0OlxuIjw8IGZpbi5zdHIoKTw8IlxuT3V0cHV0OlxuIjw8IGZvdXQuc3RyKCk7ICAgICAKfQo=