uses
	math;

const
	maxn = 20;

var
	i, j, n: longint;
	x, y, p: array [1..maxn] of longint;
	a: extended;
	cx, cy, r, rx, ry: longint;
	dl, dh: longint;
	md, dist: extended;
	shift: longint;

begin
	randseed := 66464613;

	n := 10;

	cx := random(201) - 100;
	cy := random(201) - 100;
	rx := 300 + random(101);
	ry := 300 + random(101);

	shift := random(100) + 100;

	for i := 1 to n div 2 do begin
		a := i * 2 * pi / (n div 2);
		x[i] := round(cx + rx * cos(a) + random * shift - shift / 2);
		y[i] := round(cy + ry * sin(a) + random * shift - shift / 2);
	end;

	rx := 100 + random(101);
	ry := 100 + random(101);

	shift := random(30) + 30;

	for i := n div 2 + 1 to n do begin
		a := (i - n div 2) * 2 * pi / (n div 2) + pi / (n div 2);
		x[i] := round(cx + rx * cos(a) + random * shift - shift / 2);
		y[i] := round(cy + ry * sin(a) + random * shift - shift / 2);
	end;

	md := 0;
	for i := 1 to n do begin
		for j := 1 to n do begin
			dist := hypot(x[i] - x[j], y[i] - y[j]);
			if (dist > md) then
				md := dist;
		end;
	end;

	r := min(rx, ry);
	dl := random(round(md) div 3) + 1;
	dh := round(md + 1) + dl - random(20);

	for i := 1 to n do begin
		j := random(i) + 1;
		p[i] := p[j];
		p[j] := i;
	end;

	writeln(n, ' ', dl, ' ', dh);
	for i := 1 to n do begin
		writeln(x[p[i]], ' ', y[p[i]]);
	end;
end.