파이보나치

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

문제

피보나치 수는 다음 점화식으로 정의되는 수열이다.

Fn={0n=01n=1Fn1+Fn2n>1F_n = \begin{cases} 0 & n = 0 \\ 1 & n = 1 \\ F_{n-1} + F_{n-2} & n > 1 \end{cases}

피보나치 수는 x2=x+1x^2 = x + 1의 두 근 중 하나인 황금비 φ=5+12\varphi = \frac{\sqrt{5}+1}{2}와 관계가 깊다. 일반항을 Fn=φn(1φ)n5F_n = \frac{\varphi^n - (1 - \varphi)^n}{\sqrt{5}}로 쓸 수 있다는 점이 그런 예다. 이제 φ\varphi로 파이보나치 수를 다음 점화식으로 정의한다.

Pn={1n=0φn=1Pn1+Pn2n>1P_n = \begin{cases} 1 & n = 0 \\ \varphi & n = 1 \\ P_{n-1} + P_{n-2} & n > 1 \end{cases}

F1=1F_{-1} = 1로 두면 n0n \ge 0에서 Pn=Fnφ+Fn1P_n = F_n \varphi + F_{n-1}이 성립한다. 여기서 묻는 것은 (Pn)k(P_n)^k를 두 정수 AA, BBAφk+BA \varphi^k + B 꼴로 나타낼 수 있는지다. 나타낼 수 있으면 AABB를 출력하고, 불가능하면 -1을 출력하라.

입력

첫째 줄에 두 정수 nnkk가 공백으로 구분되어 주어진다.

0n10120 \le n \le 10^{12}, 1k10121 \le k \le 10^{12}이다.

출력

첫째 줄에 (Pn)k=Aφk+B(P_n)^k = A \varphi^k + B를 만족하는 두 정수 AA, BB를 각각 1,000,000,007로 나눈 나머지를 공백으로 구분해 출력한다. 그런 두 정수가 없으면 -1을 출력한다.

힌트

n=3n = 3, k=2k = 2인 경우 (P3)2=(2φ+1)2=4φ2+4φ+1=8φ23(P_3)^2 = (2\varphi + 1)^2 = 4\varphi^2 + 4\varphi + 1 = 8\varphi^2 - 3이다. 3-3을 1,000,000,007로 나눈 나머지가 1,000,000,004이다.