#L2533. 「CQOI2018」交错序列

「CQOI2018」交错序列

题目描述
我们称一个仅由 0,1 构成的序列为「交错序列」,当且仅当序列中没有相邻的 1(可以有相邻的 0)。例如,000,001,101 都是交错序列,而 110 则不是。

对于一个长度为 (n) 的交错序列,统计其中 0 和 1 出现的次数,分别记为 (x) 和 (y)。给定参数 (a,b),定义一个交错序列的特征值为 (x^a y^b)。注意这里规定任何整数的 0 次幂都等于 1(包括 (0^0 = 1))。

显然长度为 (n) 的交错序列可能有多个。我们想要知道,所有长度为 (n) 的交错序列的特征值的和,除以 (m) 的余数。((m) 是一个给定的质数)

例如,全部长度为 3 的交错串为:000,001,010,100,101。当 (a=1,b=2) 时,可计算: [ 3^1\times 0^2 + 2^1\times 1^2 + 2^1\times 1^2 + 2^1\times 1^2 + 1^1\times 2^2 = 10。 ]


输入格式
共一行,包含三个空格分开的整数 (n,a,b) 和 (m)。


输出格式
共一行,为计算结果。


样例 1
输入:

3 1 2 1009

输出:

10

样例 2
输入:

4 3 2 1009

输出:

204

数据范围与提示
对于 (30%) 的数据,(1 \leq n \leq 15)。
对于 (100%) 的数据,(1 \leq n \leq 10^7),(0 \leq a, b \leq 45),(m < 10^8)。