Takahashikun 喜欢粉刷地板。地板被划分为 $N \times N$ 的网格,其中一些(可能为零)单元格包含障碍物。
关于网格的信息由 $N$ 个字符串 $S_1, \dots, S_N$ 给出。$S_i$ 的第 $j$ 个字符表示单元格 $(i, j)$:‘.’ 和 ‘s’ 表示空单元格,‘#’ 表示有障碍物的单元格。
恰好有一个单元格标记为 ‘s’。首先,Takahashikun 进入标记为 ‘s’ 的单元格并将其粉刷。此后,他按照以下规则进行零步或多步移动:
- 在每一步中,他移动到(垂直或水平)相邻的单元格并将其粉刷。
- 除第一步外,移动方向必须与上一步成 90 度角。也就是说,如果他上一步是水平移动,那么下一步必须垂直移动,反之亦然。
- 他不能进入已经粉刷过的单元格。
- 他不能进入有障碍物的单元格。
- 他不能走出网格范围。
请判断他是否能粉刷所有没有障碍物的单元格。
输入格式
$N$ $S_1$ $S_2$ $\vdots$ $S_N$
数据范围
- $1 \le N \le 400$
- $|S_i| = N$
- $S_i$ 中的每个字符均为 ‘.’、‘#’ 或 ‘s’。
- 恰好有一个单元格为 ‘s’。
- 至少有一个单元格为 ‘.’。
输出格式
如果他能粉刷所有没有障碍物的单元格,输出 “POSSIBLE”。否则,输出 “IMPOSSIBLE”。
样例
输入格式 1
5 #.... ..s.. ..#.. #.... ##..#
输出格式 1
POSSIBLE
说明
输入格式 2
5 s.### ..### ###.. #.... #..##
输出格式 2
IMPOSSIBLE