Little Petya loves playing with rectangles. Mom bought Petya a rectangle divided into cells *n* × *m* in size (containing *n* rows, *m* columns). Petya marked two different cells of the rectangle and now he is solving the following task:

Let's define a simple path between those two cells as a sequence of distinct cells *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*k*</sub>, where *a*<sub class="lower-index">1</sub> and *a*<sub class="lower-index">*k*</sub> are the two marked cells. Besides, *a*<sub class="lower-index">*i*</sub> and *a*<sub class="lower-index">*i* + 1</sub> are side-neighboring cells of the path (1 ≤ *i* &lt; *k*). Let's denote the path length as number *k* (the sequence length). 

Petya's task is to find the longest simple path's length and to print the path. Help him.
The first line contains space-separated integers *n* and *m* (4 ≤ *n*, *m* ≤ 1000) — the number of rows and the number of columns in the rectangle, correspondingly. The second line contains space-separated integers *x*<sub class="lower-index">1</sub> and *y*<sub class="lower-index">1</sub> — the coordinates of the first marked cell. The third line contains space-separated integers *x*<sub class="lower-index">2</sub> *y*<sub class="lower-index">2</sub> — the coordinates of the second marked cell (1 &lt; *x*<sub class="lower-index">1</sub>, *x*<sub class="lower-index">2</sub> &lt; *n*, 1 &lt; *y*<sub class="lower-index">1</sub>, *y*<sub class="lower-index">2</sub> &lt; *m*, *x*<sub class="lower-index">1</sub> ≠ *x*<sub class="lower-index">2</sub>, *y*<sub class="lower-index">1</sub> ≠ *y*<sub class="lower-index">2</sub>).

The coordinates of a marked cell are a pair of integers *x* *y*, where *x* represents the row's number and *y* represents the column's number. The rows are numbered from top to bottom with consecutive integers from 1 to *n*. The columns are numbered from the left to the right by consecutive integers from 1 to *m*.

It is guaranteed that the marked cells are not positioned in one row or column.
# Input
n, m = map(int, input().split())
x1, y1 = map(int, input().split())
x2, y2 = map(int, input().split())

# Calculate the length of the path
path_length = 2 * (n + m) - 4

# Initialize the path
path = [(x1, y1)]

# Add diagonal movement towards (x2, y2)
for i in range(1, min(x1, x2)):
    path.append((x1 - i, y1))
    path.append((x1 - i, y1 + i))

for i in range(1, min(n - x1, n - x2)):
    path.append((x1 + i, y1))
    path.append((x1 + i, y1 + i))

# Add diagonal movement towards (x2, y2)
for i in range(1, min(y1, y2)):
    path.append((x2, y1 - i))
    path.append((x2 - i, y1 - i))

for i in range(1, min(m - y1, m - y2)):
    path.append((x2, y1 + i))
    path.append((x2 - i, y1 + i))

# Print the length of the path
print(path_length)

# Print the path
for x, y in path:
    print(x, y)
