program z106;
uses crt;
const maxn=7;
type pupil=record surname:string;
name:string;
mark_inf:2..5;
mark_mat:2..5;
end;
list=array[1..maxn] of pupil;
var a:list;
n:byte;
procedure init(var x:list;
var k:byte);
var f:text;
Begin assign(f,'c:\work\1425.txt ');
reset(f);
k:=0;
while not eof(f) do begin inc(k);
with x[k] do begin readln(f,surname);
readln(f,name);
readln(f,mark_mat);
readln(f,mark_inf);
end;
end;
close(f);
end;
procedure solve (x:list;
n:byte);
var i:byte;
f:text;
Begin assign(f,'c:\work\14251.txt');
rewrite(f);
writeln(f,'ploxie');
for i:=1 to n do with x[i] do if (mark_inf=2) or (mark_mat=2) then begin writeln(f,surname);
writeln(f,name);
if mark_mat=2 then write(f,'*') else write(f,'');
writeln(f,'matematika: ', mark_mat);

if mark_inf=2 then write(f,'*')
else write(f,' ');

writeln(f,' informatika:', mark_inf);

end;

close(f);
end;

procedure sort(x:list;
n:byte);
var i,j:byte;

m:pupil;


f:text;

begin
for j:=1 to n-1 do
for i:=n downto j+1 do
if (x[i].mark_mat>x[i-1].mark_mat)
or ((x[i].mark_mat=x[i-1].mark_mat)
and (x[i].mark_inf>x[i-1].mark_inf))
then begin
m:=x[i];

x[i]:=x[i-1];

x[i-1]:=m;

end;

assign(f,'c:\work\1425.txt ');

rewrite(f);

for i:=1 to n do
with x[i] do
writeln(f,surname,name:8, mark_mat:3, mark_inf:3);

close(f);

end;

BEGIN
init(a,n);

sort(a,n);

solve(a,n);

readln;

END.