C. 皎月之轮 (wheel)

内存限制:512 MiB 时间限制:1000 ms 输入文件:wheel.in 输出文件:wheel.out
题目类型:传统 评测方式:文本比较

题目描述

艾露在无限长的数轴上运动,在每个单位时间中,运动的距离不超过 个单位长度。
每个单位时间的运动后,艾露会释放出月轮,在数轴上留下长度为 的痕迹。
假设艾露此时位于点 ,那么她会向左或者向右释放月轮,如果向左则留下痕迹为 ,向右则为
第一次释放月轮时,艾露会向左释放,之后的每次都会往前一次的反方向释放

现在你知道艾露运动了 个单位时间,在数轴上留下了 条痕迹(保证 为奇数),第 条为 保证 互不相同),但你并不知道每条痕迹是向左释放月轮留下的,还是向右留下的。
你想知道一共有多少种可能的情况,两种情况不同,当且仅当存在至少一条痕迹,在两种情况中的释放方向不同,答案对 取模。

这里对可能的情况做出说明,即艾露存在一种合法的运动方式,使得留下的痕迹能和输入给出的 条痕迹一一对应

输入格式

从文件 wheel.in 中读入。
第一行 4 个数,表示
第二行 个数,表示

输出格式

输出到文件 wheel.out 中。
输出一行一个整数,表示答案。

样例

样例输入 1

3 3 2 3
1 2 3

样例输出 1

1

样例解释 1

3 条痕迹为
艾露有 2 种可能的移动方式 。
一种是初始在 4,留下痕迹 ,然后移动到 3,留下痕迹 ,最后移动到 5,留下痕迹 ,3 条痕迹留下的方向是左右左。
另一种是初始在 5,留下痕迹 ,然后移动到 3,留下痕迹 ,最后移动到 4,留下痕迹 ,3 条痕迹留下的方向是左右左。
所以只有左右左这 1 种可能。

样例输入 2

5 10 3 2
1 2 3 4 6

样例输出 2

3

样例解释 2

共有 3 种可能,左右左左右,左左右左右,左左左右右

样例输入 3

11 100 6 3
2 3 4 6 7 8 9 11 12 15 17

样例输出 3

214

样例 4

见附加文件。

样例 5

见附加文件。

数据范围与提示

对于 的数据, 为奇数,

测试点编号