You are given three points on a plane. You should choose some segments on the plane that are parallel to coordinate axes, so that all three points become connected. The total length of the chosen segments should be the minimal possible.

Two points $a$ and $b$ are considered connected if there is a sequence of points $p_0 = a, p_1, \ldots, p_k = b$ such that points $p_i$ and $p_{i+1}$ lie on the same segment.


-----Input-----

The input consists of three lines describing three points. Each line contains two integers $x$ and $y$ separated by a space — the coordinates of the point ($-10^9 \le x, y \le 10^9$). The points are pairwise distinct.


-----Output-----

On the first line output $n$ — the number of segments, at most 100.

The next $n$ lines should contain descriptions of segments. Output four integers $x_1$, $y_1$, $x_2$, $y_2$ on a line — the coordinates of the endpoints of the corresponding segment ($-10^9 \le x_1, y_1, x_2, y_2 \le 10^9$). Each segment should be either horizontal or vertical.

It is guaranteed that the solution with the given constraints exists.


-----Examples-----

Input
1 1
3 5
8 6
Output
3
1 1 1 5
1 5 8 5
8 5 8 6


-----Note-----

The points and the segments from the example are shown below.

Source: codeforces | Difficulty: MEDIUM_HARD
Tags: Geometry

Complete search

Constructive algorithms


Solutions:
def main():
	num_x = []
	num_y = []
	for i in range(3):
		(x, y) = map(int, input().split())
		num_x.append((x, y))
		num_y.append(y)
	num_x.sort()
	num_y.sort()
	ans_list = []
	x = num_x[1][0]
	y = num_y[1]
	for j in range(3):
		ans_list.append((x, y, num_x[j][0], y))
		ans_list.append((num_x[j][0], y, num_x[j][0], num_x[j][1]))
	k = 0
	for i in ans_list:
		if i[0] != i[2] or i[1] != i[3]:
			k += 1
	print(k)
	for i in ans_list:
		if i[0] != i[2] or i[1] != i[3]:
			print(*i)
for _ in range(1):
	main()