小红开灯(四)
题号:NC292757
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

n*m盏灯排成nm列,初始为“开启”或“关闭”状态。

小红每次操作可以改变相邻两盏灯的状态(开启变关闭,关闭变开启),她想知道,能否存在一个操作方式将所有的灯都变成“开启”?请给出一个操作序列。

请注意,你不需要最小化小红的操作次数。

输入描述:

第一行输入两个正整数n,m,用空格隔开。代表灯的行数和列数。
接下来的n行,每行输入一个长度为m的01串,代表每盏灯的状态。'0'代表关闭,'1'代表开启。
1\leq n,m \leq 100

输出描述:

如果无解,请输出-1。
否则第一行输出一个整数k(0\leq k\leq 10^5),代表操作次数;接下来的k行,每行输出4个正整数x_1,y_1,x_2,y_2(1\leq x_1,x_2\leq n,1\leq y_1,y_2 \leq m),代表同时改变第x_1行第y_1列的灯和第x_2行第y_2列的灯的状态。请务必保证|x_1-x_2|+|y_1-y_2|=1
示例1

输入

复制
2 3
101
110

输出

复制
2
1 2 1 3
1 3 2 3

说明

操作方案不唯一,输出任意合法的均可。