AT_kupc2017_k Xor Summation Pattern

Description

[problemUrl]: https://atcoder.jp/contests/kupc2017/tasks/kupc2017_k 整数 $ n $, $ m $, $ k $ が入力として与えられます。このとき、以下の条件を満たす長さ $ n $ の数列 $ s $ の個数を $ 10^9\ +\ 7 $ で割った余りを求めてください。 1. $ s_i $ $ (1\ \leq\ i\ \leq\ n) $ は $ 0 $ 以上 $ m $ 以下の整数である。 2. $ 0\ xor\ s_1\ xor\ s_2\ xor\ ...\ s_n\ =\ k $ である。ただし、$ xor $ はビットごとの[排他的論理和](https://ja.wikipedia.org/wiki/%E6%8E%92%E4%BB%96%E7%9A%84%E8%AB%96%E7%90%86%E5%92%8C#.E3.83.93.E3.83.83.E3.83.88.E3.81.94.E3.81.A8.E3.81.AE.E6.8E.92.E4.BB.96.E7.9A.84.E8.AB.96.E7.90.86.E5.92.8C "排他的論理和")を表すものとする。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ n $ $ m $ $ k $

Output Format

問題文の条件を満たす数列 $ s $ の個数を $ 10^9\ +\ 7 $ で割った余りを出力せよ。

Explanation/Hint

### 制約 - $ n $, $ m $, $ k $ は整数である。 - $ 0\ \leq\ n,\ m,\ k\ \leq\ 10^{18} $ ### Sample Explanation 1 長さが $ 0 $ の数列は $ 1 $ 通りです。このときこの数列は条件 $ 2 $ も満たします。 ### Sample Explanation 3 以下の $ 6 $ 通りの数列が存在します。 - { $ 0 $, $ 1 $, $ 2 $ } - { $ 0 $, $ 2 $, $ 1 $ } - { $ 1 $, $ 0 $, $ 2 $ } - { $ 1 $, $ 2 $, $ 0 $ } - { $ 2 $, $ 0 $, $ 1 $ } - { $ 2 $, $ 1 $, $ 0 $ }