#L4806. 「RMI 2024」Octagon

「RMI 2024」Octagon

题目描述
题目译自 Romanian Master of Informatics 20242024 Day11 T22 「Octagon」

一个优雅八边形是一个凸多边形,面积不为零,且边数不超过 88。它的每条边要么与坐标轴平行,要么与坐标轴成 4545^\circ 角。所有与坐标轴平行的边长度必须是整数,而其他边的长度必须是 2\sqrt{2} 的整数倍。下面展示了几个优雅八边形的样例:

假设你沿着一个优雅八边形的边按逆时针顺序行走,会发现它由长度为 112\sqrt{2} 的线段组成,这些线段连接行走路径上连续的网格点。因此,这些线段可以根据方向分为 88 类:北、东北、东、东南、南、西南、西和西北。

现在,假设你知道了每类线段最多能使用的数量,你能构造出多少个不同的优雅八边形呢?


输入格式
输入只有一行,包含 88 个空格分隔的整数,分别表示北、东北、东、东南、南、西南、西、西北方向上最多可用的线段数量。


输出格式
输出一个整数,表示能构造出的优雅八边形总数,对 109+710^9 + 7 取模。


样例 1

输入

1 0 1 0 1 0 1 0

输出

1

在第一个样例中,唯一可能的优雅八边形是一个 1×11 \times 1 的正方形。


样例 2

输入

1 1 1 1 1 1 1 1

输出

19

在第二个样例中,总共有 1919 个不同的优雅八边形。


样例 3

输入

2 2 2 2 2 2 2 2

输出

228

样例 4

输入

1 2 3 4 4 3 2 1

输出

135

样例 5

输入

100 100 100 100 100 100 100 100

输出

636061137

数据范围与提示
对于所有输入数据,满足:

  • NN 表示输入中 88 个值的最大值。
  • N1000000000N \leq 1\,000\,000\,000
  • 如果一个优雅八边形可以通过平移(但不旋转)变成另一个,则认为它们相同。换句话说,两个优雅八边形相同,当且仅当它们在 88 个方向上使用的线段数量完全一致。

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 99 没有对角线段可用
22 1717 N100N \leq 100
33 2929 N2000N \leq 2\,000
44 N200000N \leq 200\,000
55 1616 无附加限制