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;
	u: array [-1000..1000, -1000..1000] of boolean;
	minc, maxc: longint;

begin
	randseed := 268979413;

	n := 10;
	minc := -100;
	maxc := 100;

	for i := 1 to n do begin
		repeat
			x[i] := minc + random(maxc - minc + 1);
			y[i] := minc + random(maxc - minc + 1);
		until not u[x[i]][y[i]];
		u[x[i]][y[i]] := true;
	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;

	dl := min(random(round(md) div 3) + 1, 999);
	dh := min(round(md + 1) + dl - random(30), 1000);

	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.