program Sierpinski;
	var
		r: Rect;

	procedure tracer (x, y, d: integer);
	begin
		SetRect(r, x - 1, y - 1, x + d, y + d);
		FrameRect(r);
	end;

	procedure S (n, x, y, d: integer);
	begin

		if (n = 1) then
			tracer(x, y, d)
		else
			begin
				S(n - 1, x, y, d div 2);
				S(n - 1, x, y + d div 2, d div 2);
				S(n - 1, x + d div 2, y, d div 2);
			end;
	end;

	procedure Sierpinski (n: integer);
	begin
		S(n, 10, 10, 256);
	end;


begin
	ShowDrawing;
	Sierpinski(9);  							{essayer aussi Sierpinski(2)}
	writeln('c''est fini');
end.