// Задача "Гигантский квадратный коллайдер"
// 4-ая Личная интернет-олимпиада сезона 2008-2009
// Автор задачи:  Владимир Ульянцев, ulyantsev@rain.ifmo.ru
// Автор решения: Владимир Ульянцев, ulyantsev@rain.ifmo.ru

uses
	Math, SysUtils;
type
	int = longint;
const
	maxn = 2000;
	maxx = 100000000;
var
	n : int;
	x, y : array [1..maxn] of int;
	i, j : int;

	ansSize : int;
	ansX, ansY : array [1..3] of int;

procedure assertions();
var
	i, j : int;
begin
	assert((1 <= n) and (n <= maxn));
	for i := 1 to n do begin
		assert((-maxx <= x[i]) and (x[i] <= maxx));
		assert((-maxx <= y[i]) and (y[i] <= maxx));
		for j := 1 to i - 1 do begin
			 assert(not((x[i] = x[j]) and (y[i] = y[j])));
		end;
	end;
end;

procedure initAns();
begin
	ansSize := 3;
	ansX[1] := x[1] + 239;
	ansY[1] := y[1];
	ansX[2] := x[1];
	ansY[2] := y[1] + 239;
	ansX[3] := x[1] + 239;
	ansY[3] := y[1] + 239;	
end;

procedure sort();
var
	i, j, t : int;
begin
	for i := 1 to n do begin
		for j := 2 to n do begin
			if ((x[j - 1] > x[j]) or ((x[j - 1] = x[j]) and (y[j - 1] > y[j]))) then begin
				t := x[j - 1];
				x[j - 1] := x[j];
				x[j] := t;
				t := y[j - 1];
				y[j - 1] := y[j];
				y[j] := t;
			end;
		end;
	end;
end;

function search(xp, yp : int) : boolean;
var
	l, r, m : int;
begin
	l := 1;
	r := n;
	result := false;
	while (l <= r) do begin
		m := (r + l) div 2;
		if ((x[m] = xp) and (y[m] = yp)) then begin
			result := true;
			break;
		end else if ((x[m] > xp) or ((x[m] = xp) and (y[m] > yp))) then
			r := m - 1
		else
			l := m + 1;
	end;
end;

procedure relaxAns(x1, y1, x2, y2 : int);
var
	curSize, i : int;
	curX, curY : array [1..3] of int;
begin
	curSize := 0;
	if (not search(x1, y1)) then begin
		inc(curSize);
		curX[curSize] := x1;
		curY[curSize] := y1;
	end;
	if (not search(x2, y2)) then begin
		inc(curSize);
		curX[curSize] := x2;
		curY[curSize] := y2;
	end;
	if (curSize < ansSize) then begin
		ansSize := curSize;
		for i := 1 to curSize do begin
			ansX[i] := curX[i];
			ansY[i] := curY[i];
		end;
	end;
end;

begin
	assign(input, 'collider2.in');
	reset(input);
	assign(output, 'collider2.out');
	rewrite(output);

	read(n);
	for i := 1 to n do
		read(x[i], y[i]);
	assertions();

	sort();
	initAns();
	
	for i := 1 to n do 
		for j := 1 to n do 
			if (i <> j) then 
				relaxAns(x[i] + y[j] - y[i], y[i] - x[j] + x[i], 
						 x[j] - y[i] + y[j], y[j] + x[i] - x[j]);
	
	writeln(ansSize);
	for i := 1 to ansSize do begin
		writeln(ansX[i], ' ', ansY[i]);
	end;
end.