program diagram;
uses graph,crt;
type
 pelement=^telement;
 telement=record
            data,source:integer;
            next:pelement;
end;
var list,curr,tmpcurr:pelement;allrec,gd,gm,rot,vp:integer;

var
  kb: byte absolute $0000:$0417;

procedure loaddata;
var f:text;n,alld:integer;tmp:integer;
begin
     assign(f,'c:\graph.txt');
     reset(f);
     n:=0;alld:=0;
     readln(f,allrec);
     new(list);
     curr:=list;
     for n:=1 to allrec do
         begin
         readln(f,tmp);
         curr^.source:=tmp;
         alld:=alld+tmp;
         {writeln(n);}
         if n=allrec then
            curr^.next:=nil
         else
             begin
                  new(curr^.next);
                  curr:=curr^.next;
         end;
    end;
    alld :=360 div alld;
    writeln(alld);
    curr:=list;
    for n:=1 to allrec do
        begin
             curr^.data:=curr^.source*alld;
             curr:=curr^.next;
        end;

end;

function gr2r(grad:integer):real;
var grad2:real;
begin
     grad2:=grad*(3.1415/180);
     gr2r:=grad2;
end;

procedure drawdiagr(rotate:integer;tcolor,fil:integer);
var n,gs,x1,y1,x2,y2,fc,lfc:integer;txt:string;
begin
curr:=list;
gs:=rotate;fc:=0;
setcolor(tcolor);
     for n:=1 to allrec do
     begin
          fc:=fc+1;
          {setfillstyle(1,fc);
          sector(320,240,gs,gs+curr^.data-10,210,210); }
          x1:=trunc(320+cos(gr2r(gs-1))*120);
          y1:=trunc(200+sin(gr2r(gs-1))*96);
          {x2:=trunc(320+cos(gr2r(gs+curr^.data+1))*200);
          y2:=trunc(240+sin(gr2r(gs+curr^.data+1))*200);}
          line(320,200,x1,y1);
          {line(320,240,x2,y2);}
          gs:=gs+curr^.data;
          curr:=curr^.next;
     end;
     circle(320,200,120);
     circle(320,200,123);
     fc:=1;gs:=rotate;curr:=list;
     for n:=1 to allrec do
     begin
          x1:=trunc(320+cos(gr2r(gs+(curr^.data div 2)))*60);
          y1:=trunc(200+sin(gr2r(gs+(curr^.data div 2)))*60);
          {line(320,240,x1,y1); }
          gs:=gs+curr^.data;
          fc:=fc+1;
          setfillstyle(1,fc);
          if fil=1 then floodfill(x1,y1,tcolor);
          if kb and 8 <> 8 then begin
            str(curr^.source,txt);
            settextstyle(5,0,2);
            outtextxy(x1-10,y1-10,txt);
          end;
          curr:=curr^.next;
     end;
end;

procedure disposelist;
var n:integer;
begin
     curr:=list;n:=0;
    while curr^.next<>nil do
    begin
         {n:=n+1;write(n);}
         tmpcurr:=curr;
         curr:=curr^.next;
         dispose(tmpcurr);
    end;
    dispose(curr);
    {readln;}
end;

begin
loaddata;
{readln;}
vp:=0;
gd:=4;gm:=1;

initgraph (gd,gm,'');
cleardevice;

for rot:=1 to 144 do begin
if vp=1 then vp:=0 else vp:=1;

if vp=1 then
begin
setactivepage(0);
setvisualpage(1);
end;

if vp=0 then
begin
setactivepage(1);
setvisualpage(0);
end;

clearviewport;
drawdiagr(rot*5,15,1);
delay(5000);
end;

setvisualpage(0);
disposelist;
readln;
closegraph;
end.