Олимпиадный тренинг

Задача . C. Мадока и детские шалости


Мадока в детстве была крайне капризным ребенком, и одной из её любимых шалостей было рисование на своей стене. По воспоминаниям Мадоки, стена представляла собой таблицу из \(n\) строк и \(m\) столбцов, состоящую только из нулей и единиц. Клетка в \(i\)-й строке и \(j\)-м столбце (\(1 \le i \le n\), \(1 \le j \le m\)) имела координаты \((i, j)\).

Однажды она увидела картину «Девочка-волшебница Мадока» и решила нарисовать её у себя на стене. Изначально таблица Мадоки представляет из себя таблицу размера \(n \times m\), заполненную нулями. Далее она применяет следующую операцию любое количество раз:

Мадока выбирает любой подпрямоугольник таблицы и красит его в шахматную раскраску (при этом левый верхний угол подпрямоугольника всегда имеет цвет \(0\)). Обратите внимание, что некоторые клетки могут быть покрашены несколько раз. В этом случае итоговый цвет клетки равен цвету, полученному при последнем перекрашивании.

Белый цвет обозначает \(0\), чёрный \(1\). Так, например, прямоугольник на первой картинке покрашен в шахматную раскраску, а остальные нет.

Для лучшего понимания условия рекомендуем ознакомиться с пояснениями к первому тесту.

Помогите Мадоке и найдите некоторую последовательность из не более чем \(n \cdot m\) действий, позволяющую получить данную картину, или определите, что такой не существует.

Входные данные

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится единственное целое число \(t\) (\(1 \le t \le 10\)) — количество наборов входных данных. Далее следует описание наборов входных данных.

В первой строке каждого набора входных данных содержатся два целых числа \(n\) и \(m\) (\(1 \leq n, m \leq 100\)) — размеры таблицы. Каждая из следующих \(n\) строк содержит строку длины \(m\), состоящую только из \(1\) и \(0\) — описание картины, которую хочет получить Мадока.

Выходные данные

Если данную картину получить невозможно, выведите \(-1\).

Иначе выведите в первой строке единственное целое число \(q\) (\(0 \leq q \leq n \cdot m\)) — количество операций, которое ей нужно, чтобы получить картину. Обратите внимание, что вам не нужно минимизировать количество операций.

Затем выведите для каждой операции (в порядке выполнения) в отдельной строке четыре числа — координаты левого верхнего угла и правого нижнего угла подпрямоугольника.

Примечание

Ниже содержится описание первого набора входных данных.

В третьем наборе входных данных получить нужную картину невозможно.

В четвёртом наборе входных данных исходная таблица уже является нужной картиной.


Примеры
Входные данныеВыходные данные
1 4
4 5
01000
10100
01010
00110
2 3
001
010
3 3
110
101
000
1 1
0
4
1 1 3 3
3 3 4 4
4 3 4 4
4 2 4 3
1
1 2 2 3
-1
0

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя