최대공약수의 기댓값

K개의 값이 각자의 구간에서 균등하게 독립적으로 선택될 때, 선택된 수들의 최대공약수의 기댓값을 유리수로 구해 10^9+7로 나눈 값을 출력합니다.

어려움9확률수학정수론동적 계획법아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

크기가 KK인 두 수열 AABB가 주어진다. 수열 XXAABB로 만들며, XiX_iAiA_i 이상 BiB_i 이하인 정수 중 하나를 같은 확률로 뽑은 값이다. 각 XiX_i는 서로 독립으로 뽑는다.

수열 AABB가 주어졌을 때, gcd(X0,X1,,XK1)\gcd(X_0, X_1, \dots, X_{K-1})의 기댓값을 구하는 프로그램을 작성하시오.

입력

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

각 테스트 케이스의 첫째 줄에는 KK (2K52 \le K \le 5)가 주어진다. 다음 KK개의 줄에는 AiA_iBiB_i가 공백으로 구분되어 한 줄에 하나씩 주어진다. (1AiBi2000001 \le A_i \le B_i \le 200000)

출력

각 테스트 케이스마다 한 줄에 답을 하나씩 출력한다.

기댓값을 기약분수로 나타낸 결과가 P/QP/Q일 때, P+Q×NP + Q \times N109+710^9+7로 나누어떨어지는 NN (0N109+60 \le N \le 10^9+6)을 출력한다. 그런 NN이 없으면 1-1을 출력한다.