Надіслати розв'язок


Бали: 20,00 (partial)
Time limit: 1.0s
Memory limit: 256M
Input: stdin
Output: stdout

Author:
Problem type

Задається сітка кросворда розміром ~N \times M~. Деякі комірки порожні (на кросворді вони зазвичай білі), а деякі позначені решіткою (на кросворді вони чорні). На кросворді відсутні номери слів, і Вам їх треба відновити, використовуючи такі логічні кроки:

  • крок 1: Для кожної комірки визначаємо, чи вона є горизонтальним загаданим словом, чи вертикальним. Щоб це було горизонтальне слово, то треба, щоб комірка зліва була чорною або межею кросворда, а дві клітинки справа були вільними - мінімальна довжина слова дорівнює 3. Правила для вертикального слова аналогічні: зверху має бути чорна клітинка або межа, а вниз - дві або більше вільних клітин.
  • крок 2: Призначаємо кожній комірці номер, який починає слово, послідовно від 1 у тому порядку, в якому ми читаємо книгу. В першому рядку призначаємо числа зліва-направо, потім у другому і т.д. Числа призначаємо тільки тим коміркам, де починається слово.

Input

Перший рядок вхідного потоку містить цілі числа ~N, M~ (~3 \le N, M \le 50~)

Наступні ~N~ рядків містять по ~M~ символів: крапку або решітку.

Output

У вихідний потік у першому рядку вивести кількість загаданих слів.

Наступні рядки містять координати комірок із числами у порядку їх зростання. Верхня ліва комірка має координату (1,1), а права нижня - (~N,M~)

Sample Input 1

5 3
...
#..
...
..#
.##

Sample Output 1

4
1 1
1 2
1 3
3 1

Notes

Кросворд для прикладу буде таким:

123
#..
4..
..#
.##

Коментарі

Please read the guidelines before commenting.


Ще немає коментарів.