一个众所周知的谜题是使用国际象棋中的马(knight)走遍 $8 \times 8$ 棋盘上的所有方格。马的移动规则是:先沿一个方向走一格,再沿垂直方向走两格。马必须访问棋盘上的每一个方格且不重复,最后回到起始方格。由于棋盘大小适中,有许多方法可以做到这一点,这对人类来说是一个合理的谜题。
然而,你拥有计算机和编程技能!因此,我们将为你提供一个在 $m \times n$ 矩形棋盘上的更难版本,并增加一个限制:马的路径绝不能自交。如果你将马的路径想象成连接其所跳方格中心点的直线段,那么这些线段必须构成一个简单多边形;也就是说,除了相邻线段在公共端点处接触外,没有任何两条线段相交或接触。这一限制使得访问每一个方格变得不可能,因此你必须最大化马所访问的方格数量。我们保留了马必须回到起始方格的限制。图 J.1 展示了第一个样例输入($6 \times 6$ 棋盘)的一个最优解。
图 J.1:$6 \times 6$ 棋盘的一个最优解。
输入格式
输入包含一行,包含两个整数 $m$ ($1 \le m \le 8$) 和 $n$ ($1 \le n \le 10^{15}$),表示矩形棋盘的尺寸。
输出格式
显示马在 $m \times n$ 棋盘上进行不自交巡游时所能访问的最大方格数。如果不存在这样的巡游,则输出 0。
样例
输入 1
6 6
输出 1
12
输入 2
8 3
输出 2
6
输入 3
7 20
输出 3
80
输入 4
2 6
输出 4
0