#codefestivalchinai. [code_festival_china_i]Obstruction

[code_festival_china_i]Obstruction

问题

有一个 N×NN \times N 的二维网格。(r,c)(r, c) 表示从左边数第 rr 行第 cc 列的方格。其中一些方格被涂成黑色,其他方格被涂成白色。

初始时你位于 (1,1)(1, 1),你想要走到 (N,N)(N, N)。然而,有一个叫做 Mr.X 的陌生人试图阻挠你到达 (N,N)(N, N) 的路线。

你和 Mr.X 轮流移动。初始时,Mr.X 先开始移动。在每一轮中,每个人可以按照以下方式移动:

  • Mr.X 移动到与你所在方格相邻的白色方格中的一个。如果没有 Mr.X 可以移动到的方格,Mr.X 在该轮中消失。
  • 你可以移动到与你所在方格相邻的方格中的一个,这个方格 Mr.X 上个回合没有移动到过

换句话说,你可以移动到相邻的方格中的一个。但在你移动之前,Mr.X 会选择一个可能的移动,并将其阻塞。然而,Mr.X 无法阻挡你移动到一个黑色方格。

你将获得每个方格的颜色。确定无论 Mr.X 如何阻止你的路径,你是否可以到达 (N,N)(N, N)


输入

NN
s(1,1)s_{(1,1)}s(1,2)s_{(1,2)}s(1,N)s_{(1,N)}
s(2,1)s_{(2,1)}s(2,2)s_{(2,2)}s(2,N)s_{(2,N)}
:
s(N,1)s_{(N,1)}s(N,2)s_{(N,2)}s(1,N)s_{(1,N)}

  • 第一行给出一个整数 NN (2N1,0002 \leq N \leq 1,000),表示网格的大小。
  • 接下来的 NN 行中,每行表示一个方格的颜色。每行由 .# 组成。第 ii 行第 jj 列的字符表示 (i,j)(i, j) 方格的颜色。当字符为 . 时,表示 (i,j)(i, j) 方格是白色的。当字符为 # 时,表示 (i,j)(i, j) 方格是黑色的。

输出

如果无论 Mr.X 如何阻碍你的路线,你都可以到达 (N,N)(N, N),输出 YES。否则,输出 NO。(都不包含句号)

请确保在输出末尾插入一个换行符。


输入示例 1


4
..##
...#
#..#
####

输出示例 1


YES

如果 Mr.X 在他的第一次移动时阻塞了 (1,2)(1, 2),你可以移动到 (2,1)(2, 1)。之后你可以顺着黑色方格走到达 (4,4)(4, 4)

如果 Mr.X 阻塞了 (2,1)(2, 1),你可以移动到 (1,2)(1, 2),然后顺着黑色方格走到达 (4,4)(4, 4)

因此,无论 Mr.X 如何阻碍,你都可以到达 (4,4)(4, 4)。答案是 YES


输入示例 2


4
..##
....
#..#
####

输出示例 2


NO

在这种情况下,当你在 (1,c)(1, c) 时,Mr.X 可以阻止 (2,c)(2, c)。如果 Mr.X 对他的最佳策略按照这样做,你就无法到达 (4,4)(4, 4)。答案是 NO


输入示例 3


2
.#
#.

输出示例 3


NO

在这种情况下,Mr.X 可以阻挡 (2,2)(2,2)