chogahui05가 xor 게임을 한다. 게임은 n번의 턴 동안 진행하고, 0부터 231−1까지의 정수가 하나씩 적힌 카드가 종류마다 무한히 많이 준비되어 있다. 규칙은 다음과 같다.
- chogahui05는 정수 a가 적힌 카드를 들고 시작한다.
- 매 턴마다 아래 작업을 해야 한다.
- 0≤u<231을 만족하는 정수 u를 하나 고른다.
- 지금 들고 있는 카드에 적힌 수를 num이라고 할 때, 그 카드를 num⊕u가 적힌 카드로 바꾼다. ⊕는 비트 단위 배타적 논리합이다.
게임을 마쳤을 때 chogahui05가 들고 있는 카드에 적힌 수는 b였다.
게임의 과정으로 가능한 경우의 수를 1000000007(109+7)로 나눈 나머지를 구하라. 어떤 턴에서 고른 u가 하나라도 다르면 서로 다른 과정이다.