uses graphabc; var a,b,kr:integer; procedure crug(x,y,r,n,m:integer); var xa,ya,xb,yb,xc,yc,xd,yd:integer; begin if n>0 then begin circle(x,y,r); xa:=x; ya:=y-ya-r-r div kr; xb:=x-xb-r-r div kr; yb:=y; xc:=x; yc:=y+yc+r+r div kr; xd:=x+xd+r+r div kr; yd:=y; if(m=0)or(m=1)or(m=2)or(m=3)then crug(xa,ya,r div kr,n-1,2); if(m=0)or(m=1)or(m=2)or(m=4)then crug(xb,yb,r div kr,n-1,1); if(m=0)or(m=1)or(m=3)or(m=4)then crug(xc,yc,r div kr,n-1,4); if(m=0)or(m=2)or(m=3)or(m=4)then crug(xd,yd,r div kr,n-1,3); end; end; begin window.Maximize; a:=window.Width; b:=window.Height; kr:=2; crug(a div 2,b div 2,min(a,b)div 4,12,0); end.