#P4684. GukiZ and Binary Operations

GukiZ and Binary Operations

GukiZ and Binary Operations

题面翻译

求有多少个由n个严格小于2^l的自然数组成的数列a满足(a 1&a2)|(a 2&a 3)|......|(a n-1&a n)=k

答案对m取模

输入包括一行n,k,l,m

输出一行,即答案

题目描述

We all know that GukiZ often plays with arrays.

Now he is thinking about this problem: how many arrays a a , of length n n , with non-negative elements strictly less then 2l 2^{l} meet the following condition: ? Here operation means bitwise AND (in Pascal it is equivalent to and, in C/C++/Java/Python it is equivalent to &), operation means bitwise OR (in Pascal it is equivalent to , in C/C++/Java/Python it is equivalent to |).

Because the answer can be quite large, calculate it modulo m m . This time GukiZ hasn't come up with solution, and needs you to help him!

输入格式

First and the only line of input contains four integers n n , k k , l l , m m ( 2<=n<=1018 2<=n<=10^{18} , 0<=k<=1018 0<=k<=10^{18} , 0<=l<=64 0<=l<=64 , 1<=m<=109+7 1<=m<=10^{9}+7 ).

输出格式

In the single line print the number of arrays satisfying the condition above modulo m m .

样例 #1

样例输入 #1

2 1 2 10

样例输出 #1

3

样例 #2

样例输入 #2

2 1 1 3

样例输出 #2

1

样例 #3

样例输入 #3

3 3 2 10

样例输出 #3

9

提示

In the first sample, satisfying arrays are 1,1,3,1,1,3 {1,1},{3,1},{1,3} .

In the second sample, only satisfying array is 1,1 {1,1} .

In the third sample, satisfying arrays are $ {0,3,3},{1,3,2},{1,3,3},{2,3,1},{2,3,3},{3,3,0},{3,3,1},{3,3,2},{3,3,3} $ .