{
rqnoj.378.cord
}
program cord;
type
people=record
s:string;
m:longint;
end;
var
a:array[1..130000]of people;
b:array[1..15,1..3]of longint;
c:array[1..10000]of string;
i,j,n,full:longint;
ch:char;
procedure quick(l,r:longint);
var i,j,k:longint;
m,ss:string;
begin
i:=l; j:=r;
m:=a[(i+j)div 2].s;
repeat
while a[i].s<m do inc(i);
while a[j].s>m do dec(j);
if i<=j then begin
ss:=a[i].s; k:=a[i].m;
a[i].s:=a[j].s; a[i].m:=a[j].m;
a[j].s:=ss; a[j].m:=k;
inc(i);
dec(j);
end;
until i>j;
if i<r then quick(i,r);
if j>l then quick(l,j);
end;
begin
full:=0;
for i:=1 to 15 do begin b[i,1]:=(i-1)*10; b[i,2]:=i*10-1; end;
b[1,1]:=1;
readln(n);
for i:=1 to n do begin
j:=0;
read(ch);
while ch<>' ' do begin
inc(j);
a[i].s:=a[i].s+ch;
read(ch);
end;
readln(a[i].m);
end;
quick(1,n);
for i:=1 to n do begin
if a[i].m=150 then begin inc(full); c[full]:=a[i].s; end
else begin
for j:=1 to 15 do if (a[i].m>=b[j,1])and(a[i].m<=b[j,2]) then begin inc(b[j,3]); break; end;
end;
end;
for i:=1 to 15 do write(b[i,1],'~',b[i,2],' ');writeln;
for i:=1 to 15 do write(b[i,3],' '); writeln;
for i:=1 to n do writeln(a[i].s,' ',a[i].m);
if full>0 then begin
writeln(full);
for i:=1 to full do writeln(c[i]);
end
else begin writeln('0'); writeln('No'); end;
readln;
end.