D. Рамки
ограничение по времени на тест
2 seconds
ограничение по памяти на тест
256 megabytes
ввод
стандартный ввод
вывод
стандартный вывод

Однажды Васе в руки попался листок клетчатой бумаги размером n × m клеток. Наш Вася очень любит геометрические фигуры, и поэтому он нарисовал на листке два прямоугольника со сторонами, параллельными осям координат, причем длина каждой стороны каждого прямоугольника не менее чем 3 клетки, а сами стороны нарисованы по линиям между клетками (также стороны могут являться частью границы листка бумаги). Затем Вася заштриховал все клеточки на рамках прямоугольников.

Рамкой прямоугольника назовем множество клеток внутри прямоугольника, имеющие хотя бы одну общую сторону с его границей.

Спустя некоторое время, Вася нашел лист бумаги того же самого размера, и никак не мог понять, тот же самый ли это листок. Поэтому он попросил вас проверить, правда ли, что на найденном им листке бумаги нарисованы две рамки, и ничего кроме них.

Обратите внимание, что нарисованные Васей рамки могут пересекаться, накладываться произвольным образом и даже полностью совпадать.

Координаты на листке введены таким образом, что ось X идет сверху вниз, x-координаты номеров клеток принимают значения от 1 до n, а ось Y идет слева направо, и y-координаты клеток принимают значения от 1 до m.

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

В первой строке входных данных записаны два целых числа n и m (3 ≤ n, m ≤ 1000) — размеры найденного листка. Следующие n строк, каждая из которых состоит из m символов «.» (точка) и «#» (решетка), описывают найденный листок бумаги. Символ «#» означает заштрихованную клетку, символ «.» — незаштрихованную.

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

Выведите в первую строку единственное слово «YES» или «NO», означающее, верно ли, что на найденном листке нарисованы две рамки. При утвердительном ответе во вторую строку выведите 4 целых числа: координаты верхнего левого и правого нижнего углов первой рамки, и в третью строку — 4 целых числа: координаты верхнего левого и правого нижнего углов второй рамки. Если ответов несколько, выведите любой.

Примеры
Входные данные
4 5
#####
#.#.#
###.#
#####
Выходные данные
YES
1 1 3 3
1 1 4 5
Входные данные
5 6
...###
...###
#####.
#...#.
#####.
Выходные данные
NO
Примечание

В первом примере на рисунке существует две рамки. Первая:

###..
#.#..
###..
.....

Вторая:

#####
#...#
#...#
#####

Во втором примере нарисованы не рамки. Обратите внимание, что у корректных рамок высота и ширина не меньше 3.