“Quoridor” 是一款供两名或四名玩家参与的策略棋盘游戏。它在由正方形格子组成的方形棋盘上进行。每位玩家拥有一个棋子和一组墙,每堵墙的长度为两个格子。棋子可以站在正方形格子内,墙可以放置在格子之间。游戏的目标是在所有其他玩家之前将自己的棋子移动到棋盘对面。棋子只能移动到相邻的格子,且不能穿过墙。如果棋子移动到的格子已经被另一名玩家的棋子占据,则可以通过跳过该棋子移动到更远处的相邻格子。墙不能重叠或交叉,但可以接触。放置墙时必须确保所有玩家始终有路可走:不能完全阻挡玩家完成游戏。
现在有三名玩家进行一种新的三人游戏版本。新游戏中的棋盘是六边形的,由六边形格子组成。玩家棋子从三个互不相邻的棋盘角出发。每位玩家的目标是到达对面的角。这里的墙长度也为两个格子边,但由于格子形状的改变,墙现在是弯曲的。墙的任何部分都不能沿着棋盘边缘放置。以下是游戏进行的一个示例:
大写字母为玩家棋子,小写字母为各自的目标
玩家 A 现在需要移动。他们暂时不想移动自己的棋子,因此正在考虑所有可以在棋盘上放置墙的方式。请问有多少种这样的放置方式?
输入格式
输入的第一行包含一个整数 $n$:六边形棋盘一侧的格子数量,$2 \le n \le 250$。 其余输入行以 ASCII 艺术的形式描绘了当前的游戏情况。棋盘描述的行数等于每行的字符数,为 $4n - 1$。格子边界用字符 “\”、“/” 和 “ ” 绘制。墙用字符 “@” 表示,位于格子边界处。大写字母 “A”、“B” 和 “C” 表示玩家棋子。小写字母 “a”、“b” 和 “c” 分别是这些玩家的目标。六个字母中的每一个在棋盘上恰好出现一次。小写字母根据游戏规则放置。
棋盘描述中的其余字符均为空格。注意,大多数行(但并非全部)以空格字符开头和结尾,且每行至少包含一个非空格字符。
输出格式
输出一行,包含一个整数:玩家 A 在棋盘上放置墙的可能方式数量。
样例
输入 1
2 _ _/a\_ /B\_/C\ \_/ \_/ /c\_/b\ \_/A\_/ \_/
输出 1
18
输入 2
2 _ _/a\_ /B@@/C\ \@/ \_/ /c@_@b\ \_/A@_/ \_/
输出 2
0
说明
在第一个样例中,墙可以放置在与六个边界格子相邻的任意两个可用位置,以及与中心格子相邻的六个可用位置,总计 $2 \cdot 6 + 6 \cdot 1 = 18$ 种放置方式。
第二个样例展示了一种情况,即无法在任何地方放置墙而不阻挡某些玩家获胜。