Codeforces Round 307 (Div. 2)
D
GukiZ and Binary Operations
Codeforces
2100
原题
← CE →
翻译中…

We all know that GukiZ often plays with arrays.

翻译中…

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

翻译中…

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

翻译中…

Input

翻译中…

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

翻译中…

Output

翻译中…

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

翻译中…

Note

翻译中…

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

翻译中…

In the second sample, only satisfying array is ${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}$.

翻译中…

样例

Input #1
2 1 2 10
Output #1
3
InputCopy OutputCopy
Input #2
2 1 1 3
Output #2
1
InputCopy OutputCopy
Input #3
3 3 2 10
Output #3
9
InputCopy OutputCopy
题目信息
题号
551D
时间限制
1 s
内存限制
256 MB
标签
组合数学
模拟
数学
矩阵
数论

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。