小 Vitechka 和小 Mitechka 买了一个蛋糕,这个蛋糕在网格托盘上呈现为一个连通的网格图形。但无论他们怎么尝试将其切成两块,其中一块总是比另一块更美观。因此,他们决定将蛋糕切成两个完全相同的部分。这两部分必须是连通的,且切割线必须沿着网格线(即沿着单元格的边界)。
请帮助 Vitechka 和 Mitechka 切割蛋糕。
如果存在一种平面等距变换(轴对称、平移和旋转的组合)可以将一个图形映射到另一个图形,则称这两个图形是相等的(全等的)。
如果一个网格图形中,仅通过在图形中相邻(共边)的单元格之间移动,就可以从任意单元格到达其他任意单元格,则称该网格图形是连通的。
输入格式
第一行包含两个整数 $n$ 和 $m$:分别表示托盘的高度和宽度($1 \le n, m \le 1000$)。
接下来的 $n$ 行,每行包含 $m$ 个字符 “.” 或 “X”,表示托盘的状态。蛋糕图形覆盖且仅覆盖托盘中字符为 “X” 的单元格。
保证蛋糕在托盘中占据至少 1 个且不超过 1000 个单元格。
输出格式
如果可以将蛋糕切开,第一行输出 “YES”。在接下来的 $n$ 行中,每行输出 $m$ 个字符 “.”、“A” 或 “B”,使得由字符 “A” 和 “B” 组成的图形分别对应划分后的两部分。
如果无法将蛋糕切成两个相等的部分,则在单行中输出 “NO”。
样例
输入样例 1
3 4 .X.. XXX. ..XX
输出样例 1
YES .B.. BBA. ..AA
输入样例 2
3 4 XXXX .XXX ..X.
输出样例 2
NO