#codefestivalrelayd. [code_festival_relay_d]FU

[code_festival_relay_d]FU

问题描述

X和Y两位玩家正在玩一款名为FU的游戏。

这个游戏是在一个n×nn \times n的棋盘上,使用名为FU的棋子进行的。X玩家将自己的FU棋子逐个放置在棋盘最顶行的每个格子中,朝下放置;Y玩家将自己的FU棋子逐个放置在棋盘最底行的每个格子中,朝上放置。

玩家按照以下规则交替选择自己的FU棋子并移动:

  • X玩家的FU只能向下相邻的格子移动;
  • Y玩家的FU只能向上相邻的格子移动;
  • 如果自己的FU和对手的FU同时位于同一个格子中,可以吃掉对手的FU

在这个游戏中,玩家不能跳过自己的回合,也不能连续两次移动自己的FU。当某位玩家吃掉所有对手的FU时,该玩家获胜。

Noma君在比赛进行到中途时加入观战,但无论他问X玩家和Y玩家谁是先手,他们都无法回答,因为他们正专注于比赛。幸运的是,比赛刚刚开始,X玩家和Y玩家都没有吃掉对方的FU,所以根据棋盘的状态,也许可以确定谁是先手。

因此,请编写一个程序,输入当前的棋盘状态,判断谁是先手。


输入

输入以以下格式给出:

nn

B1,1B1,2...B1,nB_{1,1}B_{1,2}...B_{1, n}

B2,1B2,2...B2,nB_{2,1}B_{2,2}...B_{2, n}

...

Bn,1Bn,2...Bn,nB_{n,1}B_{n,2}...B_{n, n}

  • 第一行包含一个整数 nn (2n1002 \leq n \leq 100),表示棋盘的边长。
  • 接下来的 nn 行依次给出棋盘每行的状态,从最顶行到最底行。
  • 每个 BB 表示一个格子的状态,可以是.XY三种字符之一。
  • .表示该格子没有放置棋子,XY分别表示该格子有X玩家和Y玩家的FU棋子。
  • 每列上必定存在一个X和一个Y,并且保证X位于Y上面。
  • 提供的棋盘状态满足游戏规则。

输出

如果X玩家先手,则输出X;如果Y玩家先手,则输出Y;如果无法确定谁是先手,则输出Impossible

最后换行,不包含多余的字符和空行。


输入示例1


4
X..X
.XX.
.YYY
Y...

输出示例1


Y

输入示例2


3
XXX
...
YYY

输出示例2


Impossible