H. 结界的巫女-hard

Naive

时间限制:1000 ms

内存限制:256 MiB

题面

二色蓮花蝶 ~ Ancients

最近,博丽灵梦发现外界的人类误入幻想乡的事件频繁发生。经过调查,灵梦发现这是因为博丽大结界的灵力紊乱导致的。

博丽大结界是通过 N×MN\times M 块阴阳玉维持的,阴阳玉有“阴”、“阳”两种状态,它们的排布可以看作是一个 NNMM 列的网格。

灵梦每次可以给其中一块阴阳玉注入灵力,这块阴阳玉及其上下左右相邻(如有)的阴阳玉的状态都会发生翻转(即由“阳”变“阴”或由“阴”变“阳”)。

经过反复的调整,并不熟悉博丽大结界的灵梦还是没有能成功将阴阳玉调整为需要的状态。于是灵梦又找到具有编程程度能力的你,希望你能够给出一个操作序列,把当前的阴阳玉网格中的阴阳玉都变为所需的状态。

输入格式

第一行包含两个正整数 NNMMM,N500M, N \leq 500)。 分别表示阴阳玉网格的行和列。

接下来 NN 行,每行 MM 个数,只会出现 01 ,表示阴阳玉的初始状态(0 表示“阴”、1表示“阳”)。

接下来 NN 行,每行 MM 个数,只会出现 01 ,表示阴阳玉的目标状态。

输出格式

第一行一个正整数 KKKM×NK \leq M \times N)表示操作次数。

可以证明,如果有解,那么一定能在至多 M×NM \times N 次操作以内解决。输入数据保证有解。

接下来 KK 行,每行 22 个数,分别表示需要操作的阴阳玉所在的行和列。

样例

输入

2 3
1 0 0
0 1 1
1 1 0
1 0 0

输出

1
2 2