J. 湖中回眸
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
我这条本该死的负罪之命,死也要死的有用些——

杀,我会去杀、用我这条命去换我们仇人的命!

杀!用我的命去证明这世道是错的—天,亦是错的!

湖边寻到满穗后,良有太多疑问。

良的问题和满穗的实情可以抽象成两个 $$$n\times m$$$ 的 $$$01$$$ 矩阵 $$$A$$$ 和 $$$B$$$。

矩阵每一个位置 $$$(i, j)$$$ 有一个权值,如果该点为 $$$1$$$,权值为 $$$0$$$,否则为与它相邻的 $$$1$$$ 的数量(两个格子相邻当且仅当它们共用一个点或一条边)。

良的每次提问可以表示为反转 $$$A$$$ 中的某一位。

为了清楚事实,良希望尽可能的少提问,使得 $$$A$$$ 和 $$$B$$$ 的权值和相等。

形式化的:给定两个 $$$n\times m$$$ 的 $$$01$$$ 矩阵 $$$A$$$ 和 $$$B$$$。

矩阵 $$$(i, j)$$$ 位置的值为 $$$1$$$ ,权值为 $$$0$$$,否则为与它相邻的 $$$1$$$ 的数量(两个格子相邻当且仅当它们共用一个点或一条边)。

你可以执行以下操作:

选择 $$$A$$$ 的一个位置 $$$(i, j)$$$,反转这一位的 $$$01$$$ 值。

构造一种操作序列,在操作后两矩阵的权值和相等,且操作序列长度不能超过 $$$\lfloor \frac{nm}2 \rfloor$$$。

Input

第一行输入两个正整数 $$$n$$$,$$$m$$$($$$1\le n\times m \le 10^6$$$),表示矩阵大小。

接下来 $$$n$$$ 行,第 $$$i$$$ 行输入一个长度为 $$$m$$$ 的 $$$01$$$ 字符串,表示 $$$A_i$$$。

接下来 $$$n$$$ 行,第 $$$j$$$ 行输入一个长度为 $$$m$$$ 的 $$$01$$$ 字符串,表示 $$$B_j$$$。

Output

第一行输出一个整数 $$$k$$$($$$0\le k \le \lfloor \frac{nm}2 \rfloor$$$),表示操作序列的长度。

接下来 $$$k$$$ 行,每行输出两个正整数 $$$i$$$ 和 $$$j$$$,表示对 $$$A$$$ 的操作位置。

Example
Input
2 3
011
000
101
111
Output
1
2 3