Yandex 有一个专门处理各国政府特殊订单的秘密部门。最近,他们收到了一份来自一个小香蕉共和国的消息,该国正遭受外星人的入侵!
大家都听说过麦田怪圈:那些有时出现在土豆田或麦田里的奇怪圆形图案,它们可能是也可能不是由 UFO 留下的。在香蕉共和国的情况则有些不同:这些讨厌的外星人留下的不是麦田怪圈,而是由被压扁的香蕉植株组成的矩形。现在,他们请求 Yandex 帮助调查外星人最近在地球上的所作所为。
你拥有一张香蕉田的卫星照片,照片被划分为若干个单元格,每个单元格要么是完好的,要么是被压扁的。最好的 UFO 研究人员认为,外星人倾向于通过压扁大小为 $r \times c$ 的矩形边框内的所有单元格来绘制矩形,其中 $r$ 和 $c$ 均至少为 3。这些边框从不共享单元格,而且出于某种奇怪的原因,没有两个边框在两条或更多条边上接触。
请帮助 Yandex 秘密部门识别出所有由外星人创建的矩形,你或许能拯救地球免受外星人的入侵!
输入格式
输入的第一行包含两个整数 $n$ 和 $m$ ($3 \le n, m \le 2000$),表示照片的尺寸。
接下来 $n$ 行定义了照片。每行包含 $m$ 个字符。每个字符要么是表示完好单元格的 “.”,要么是表示被压扁单元格的 “X”。
保证给定的图片对应于满足上述条件的一组矩形。
输出格式
在第一行,输出一个整数 $k$ ($k \ge 0$),表示照片中包含的被压扁矩形的数量。
在接下来的 $k$ 行中,每行输出四个整数 $r_1, c_1, r_2$ 和 $c_2$ ($1 \le r_1 < r_2 \le n, 1 \le c_1 < c_2 \le m$),分别表示矩形左上角和右下角的行号和列号。
行号从上到下从 1 到 $n$ 编号,列号从左到右从 1 到 $m$ 编号。
你可以按任意顺序输出矩形。如果存在多种可能的答案,输出其中任意一个即可。
样例
输入 1
3 3 XXX X.X XXX
输出 1
1 1 1 3 3
输入 2
6 7 XXXXXXX X.XX..X XXXXXXX XXXXXXX X.XX..X XXXXXXX
输出 2
4 1 1 3 3 1 4 3 7 4 1 6 3 4 4 6 7
输入 3
10 10 .......... XXXXXXXXXX X..XXXX..X X..X..X..X X..XXXX..X X...XXXX.X X...X..X.X X...X..X.X X...XXXX.X XXXXXXXXXX
输出 3
3 2 1 10 10 3 4 5 7 6 5 9 8