#agc022f. [agc022_f]Checkers

[agc022_f]Checkers

问题陈述

X=10100X = 10^{100}。Inaba在数轴上有 NN 个棋子,其中第 ii 个棋子位于坐标 XiX^{i},对所有 1iN1 \leq i \leq N

每一秒钟,Inaba选择两个棋子 AABB,将 AA 移动到相对于 BB 当前位置的对称点。然后,棋子 BB 被移除。 (可能发生 AABB 占据同一位置的情况,并且在移动后,AA 可能与另一个棋子占据同一位置)。

经过 N1N-1 秒,只剩下一个棋子。计算最终棋子的不同可能位置数,模 109+710^{9} + 7

约束条件

  • 1N501 \leq N \leq 50
  • NN 是一个整数。

输入

输入以以下格式从标准输入给出:

NN

输出

打印最终棋子的不同可能位置数,模 109+710^{9} + 7


样例输入 1

3

样例输出 1

12

33 个棋子,分别位于 10100,10200,1030010^{100}, 10^{200}, 10^{300}。称它们为 A,B,CA, B, C

以下是两种(共 1212 种)可能的移动序列:

  • 第一秒让 AA 跳过 BB,第二秒让 AA 跳过 CCAA 的最终位置是 2×103002×10200+101002 \times 10^{300} - 2 \times 10^{200} + 10^{100}
  • 第一秒让 CC 跳过 AA,第二秒让 BB 跳过 CCBB 的最终位置是 2×1030010200+4×10100-2 \times 10^{300} - 10^{200} + 4 \times 10^{100}

共有 3×2×2=123 \times 2 \times 2 = 12 种可能的移动序列,并且所有序列中最终的棋子位置都不同。


样例输入 2

4

样例输出 2

84

样例输入 3

22

样例输出 3

487772376

记得将答案模 109+710^{9} + 7 输出。