F_1=1, F_2=2인 피보나치 수 F_i에 대해 F_i 곱하기 i^k를 i=1부터 n까지 더한 값을 구한다. n은 10^17까지 커질 수 있다.
피보나치 수열은 다음과 같이 정의된다.
F1=1,F2=2,Fi=Fi−1+Fi−2(i>2)F_1 = 1, \quad F_2 = 2, \quad F_i = F_{i-1} + F_{i-2} \quad (i > 2)F1=1,F2=2,Fi=Fi−1+Fi−2(i>2)
수열 Ai(k)A_i(k)Ai(k)는 다음과 같이 정의된다.
Ai(k)=Fi×ik(i≥1)A_i(k) = F_i \times i^k \quad (i \ge 1)Ai(k)=Fi×ik(i≥1)
nnn과 kkk가 주어졌을 때 A1(k)+A2(k)+⋯+An(k)A_1(k) + A_2(k) + \cdots + A_n(k)A1(k)+A2(k)+⋯+An(k)를 구하는 프로그램을 작성하시오.
첫째 줄에 nnn과 kkk가 공백으로 구분되어 주어진다. (1≤n≤10171 \le n \le 10^{17}1≤n≤1017, 1≤k≤401 \le k \le 401≤k≤40)
첫째 줄에 A1(k)+A2(k)+⋯+An(k)A_1(k) + A_2(k) + \cdots + A_n(k)A1(k)+A2(k)+⋯+An(k)를 109+710^9 + 7109+7로 나눈 나머지를 출력한다.