program opsteStablo;
type
pokazivac = ^slog;

slog = record
  broj:integer;
  deca:array[1..3] of pokazivac;
  end;

var

koren,dete,unuk:pokazivac;
d,i:integer;



procedure sumaUStablu(koren:pokazivac;var suma:integer);
var i:integer;
 s:array[1..3] of integer;
 
begin
if (koren<> nil) then
  begin
  for i:= 1 to 3 do sumaUStablu(koren^.deca[i],s[i]);
  suma:=koren^.broj;
  for i:= 1 to 3 do  suma:=suma+s[i]; 
  end
else suma:=0;

end;

begin
new(koren);
koren^.broj:=5;
for i:=1 to 3 do new(koren^.deca[i]);

dete:=koren^.deca[1];
dete^.broj:=7;
for i:=1 to 2 do new(dete^.deca[i]);
dete^.deca[3]:=nil;

unuk:=dete^.deca[1];
unuk^.broj:=1;
for i:=1 to 3 do unuk^.deca[i]:=nil;

unuk:=dete^.deca[2];
unuk^.broj:=3;
for i:=1 to 3 do unuk^.deca[i]:=nil;

dete:=koren^.deca[2];
dete^.broj:=5;
for i:=1 to 3 do dete^.deca[i]:=nil;

dete:=koren^.deca[3];
dete^.broj:=9;
for i:=2 to 3 do dete^.deca[i]:=nil;
new(dete^.deca[1]);

unuk:=dete^.deca[1];
unuk^.broj:=3;
for i:=1 to 3 do unuk^.deca[i]:=nil;


sumaUStablu(koren,d);
writeln('Suma u stablu je ',d);

end.