你会得到一个仓库的描述。 它是一个 n × m 大小的矩形方格场。 字段中的每个单元格可以为空(“.”),也可以被墙占据(“*”)。你有一颗炸弹。 如果你将炸弹放在单元格 (x, y) 上,那么在触发后它将清除 x 行中的所有墙壁和 y 列中的所有墙壁。你要确定是否可以通过放置并触发一枚炸弹来消灭仓库中的所有墙壁。 炸弹既可以放置在空单元格中,也可以放置在被墙占用的单元格中。
你会得到一个仓库的描述。 它是一个 n × m 大小的矩形方格场。 字段中的每个单元格可以为空(“.”),也可以被墙占据(“*”)。你有一颗炸弹。 如果你将炸弹放在单元格 (x, y) 上,那么在触发后它将清除 x 行中的所有墙壁和 y 列中的所有墙壁。你要确定是否可以通过放置并触发一枚炸弹来消灭仓库中的所有墙壁。 炸弹既可以放置在空单元格中,也可以放置在被墙占用的单元格中。
第一行包含两个正整数 n 和 m (1 ≤ n, m ≤ 1000) — 矩形方格场的行数和列数。
接下来的 n 行包含 m 个符号“.” 和“*”每个字段的描述。 其中第 i 个中的第 j 个符号代表单元格 (i, j)。 如果符号等于“.”,则对应的单元格为空,否则等于“*”,对应的单元格被墙占据。
如果通过放置和触发一个炸弹来消灭所有墙壁是不可能的,那么在第一行打印“NO”(不带引号)。否则在第一行打印“YES”(不带引号),在第二行打印两个整数——炸弹应该放置的单元格的坐标。 如果有多个答案,请打印其中任何一个。
3 4 .*.. .... .*..
YES 1 2
样例2输入
3 3
..*
.*.
*..
样例2输出
NO
样例3输入
6 5
..*..
..*..
*****
..*..
..*..
..*..
样例3输出
YES
3 3