2^3은?

시간 제한1초메모리 제한1024 MB

요약
a≤p, b≤q, c≤r인 양의 정수 (a,b,c) 중 a⊕b⊕c와 a^(b^c)가 같아지는 경우의 수를 1,000,000,007로 나눈 나머지를 구한다.
난이도

어려움10점 중 9점

유형
수학, 정수론, 조합론, 구현
정답자
아직 제출이 없습니다

문제

QQ: 22^33은 무엇인가요?

피돌이: 11이요!

수돌이: 88이요!

퀴즈 대회에서 이 질문에 대해 피돌이는 ^를 XOR(⊕\oplus)로 보아서 2⊕3=12\oplus 3=1을 답했고 수돌이는 ^를 지수를 나타내는 232^3로 보아서 88이라고 답했다. 이런 혼선을 막기 위해, 퀴즈 대회의 출제자는 ^를 XOR로 볼 때와 지수로 볼 때의 답이 같도록 문제를 만들기로 했다. 하지만 두 개의 수에 대해서 문제를 만드는 것은 너무 쉽다고 생각한 퀴즈 출제자는, 다음과 같이 만들 문제를 바꿨다.

  • 세 개의 수 a, b, ca,\ b,\ c에 대해 피돌이와 수돌이가 계산하는 aa ^ bb ^ cc 값이 같아야 한다.
  • 피돌이는 ^기호를 항상 XOR로 본다. 즉 aa ^ bb ^ cc를 a⊕b⊕ca\oplus b\oplus c로 계산한다.
  • 수돌이는 ^기호를 항상 지수로 본다. 즉 aa ^ bb ^ cc를 abca^{b^c}로 계산한다. abca^{b^c}를 계산할 때는 먼저 bcb^c를 계산한 후 이 값이 aa의 지수에 있다고 생각하여 계산한다.

aa, bb, cc는 각각 a≤p, b≤q, c≤ra\le p,\ b\le q,\ c \le r을 만족하는 양의 정수일 때, 위 조건을 만족하는 세 값 (a,b,c)(a,b,c)로 가능한 경우의 수를 구해보자. 단, 답이 너무 커질 수 있으므로 답을 1,000,000,0071\\,000\\,000\\,007로 나눈 나머지를 구해보자.

입력

첫째 줄에 테스트 케이스의 개수 TT 가 주어진다. (1≤T≤1 000)(1\le T\le 1\ 000)

각 테스트 케이스의 첫째 줄에 양의 정수 pp, qq, rr 이 공백을 두고 주어진다. (1≤p, q, r≤107)(1\le p,\ q,\ r\le 10^7)

모든 테스트 케이스에서 pp의 합, qq의 합, rr의 합은 각각 10710^7을 넘지 않는다.

출력

각 테스트 케이스의 첫째 줄에 세 값 (a, b, c)(a,\ b,\ c)로 가능한 경우의 수를 1,000,000,0071\\,000\\,000\\,007로 나눈 나머지를 출력한다.

예제1

  1. 예제 1

    입력
    2
    2 1 2
    1 3 2
    
    예상 출력
    2
    2