토네이도 연산 숙제

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

수학 숙제를 할 시간이다. 토네이도 연산 T(n)T(n)은 다음과 같이 정의한다.

T(n)={a(n=0)[T(n1)+Xn]Yn(nZ+)T(n) = \begin{cases} a & (n = 0) \\ \left[ T(n-1) + X_n \right]^{Y_n} & (n \in \mathbb{Z}^{+}) \end{cases}

aa는 주어지는 상수이고, Z+\mathbb{Z}^{+}는 양의 정수의 집합이다. XnX_nYnY_n은 양의 정수이며, 모든 양의 정수 nn에 대해 XnXn+1X_n \le X_{n+1}YnYn+1Y_n \le Y_{n+1}을 만족하도록 고른다. 또 모든 양의 정수 nn에 대해 minXXnmaxX\min X \le X_n \le \max X이고 minYYnmaxY\min Y \le Y_n \le \max Y이다.

예를 들어 a=1a = 1, X1=2X_1 = 2, X2=4X_2 = 4, Y1=Y2=3Y_1 = Y_2 = 3이면 다음과 같다.

T(2)=[T(1)+X2]Y2=[(T(0)+X1)Y1+X2]Y2=[(1+2)3+4]3=29791T(2) = \left[ T(1) + X_2 \right]^{Y_2} = \left[ (T(0) + X_1)^{Y_1} + X_2 \right]^{Y_2} = \left[ (1 + 2)^3 + 4 \right]^3 = 29791

aa, minX\min X, maxX\max X, minY\min Y, maxY\max Y와 두 양의 정수 PP, CC가 주어진다. X1,,XnX_1, \ldots, X_nY1,,YnY_1, \ldots, Y_n을 적절히 골라 T(n)+CT(n) + C10P10^P로 나누어떨어지게 만들 때, nn의 최솟값을 구하는 것이 숙제다. nn은 0 이상의 정수이며, n=0n = 0은 연산을 한 번도 적용하지 않고 T(0)=aT(0) = a를 그대로 쓴다는 뜻이다.

입력

입력은 테스트 케이스 여러 개로 이루어진다. 첫 줄에 테스트 케이스의 개수 TT가 주어진다 (1T2001 \le T \le 200). 이어지는 TT개의 줄에 테스트 케이스가 한 줄에 하나씩 주어진다.

각 줄에는 정수 7개 aa, minX\min X, maxX\max X, minY\min Y, maxY\max Y, PP, CC가 이 순서대로 공백 하나로 구분되어 주어진다 (1minX,maxX,minY,maxY1001 \le \min X, \max X, \min Y, \max Y \le 100, 1P31 \le P \le 3, 1a,C10000001 \le a, C \le 1\,000\,000).

출력

각 테스트 케이스마다 T(n)+CT(n) + C10P10^P로 나누어떨어지는 nn의 최솟값을 한 줄에 하나씩 출력한다. 그런 nn이 없으면 대신 -1을 출력한다.