uses crt;
var a,s:array[0..10000] of string;
i,j,vt,n:byte;
procedure swap(var s1,s2:string);
var t:string;
begin
t:=s1;s1:=s2;s2:=t;
end;
begin
clrscr;
readln(n);
for i:=1 to n do readln(a[i]);
for i:=1 to n do
begin
vt:=pos(' ',a[i]);
s[i]:=copy(a[i],1,vt-1);
for j:=length(a[i]) downto 1 do
if a[i][j]=' ' then break;
s[i]:=copy(a[i],j+1,length(a[i])-j)+' '+s[i];
s[i]:=s[i]+copy(a[i],vt,length(a[i])-j+1);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if s[i]>s[j] then
begin
swap(s[i],s[j]);
swap(a[i],a[j]);
end;
writeln('=============================');
for i:=1 to n do writeln(a[i]);
readkey;
end.