피보나치 수열처럼 보이지만...

F_1=1, F_2=2인 피보나치 수 F_i에 대해 F_i 곱하기 i^k를 i=1부터 n까지 더한 값을 구한다. n은 10^17까지 커질 수 있다.

어려움8수학동적 계획법행렬이분 탐색아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

피보나치 수열은 다음과 같이 정의된다.

F1=1,F2=2,Fi=Fi1+Fi2(i>2)F_1 = 1, \quad F_2 = 2, \quad F_i = F_{i-1} + F_{i-2} \quad (i > 2)

수열 Ai(k)A_i(k)는 다음과 같이 정의된다.

Ai(k)=Fi×ik(i1)A_i(k) = F_i \times i^k \quad (i \ge 1)

nnkk가 주어졌을 때 A1(k)+A2(k)++An(k)A_1(k) + A_2(k) + \cdots + A_n(k)를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 nnkk가 공백으로 구분되어 주어진다. (1n10171 \le n \le 10^{17}, 1k401 \le k \le 40)

출력

첫째 줄에 A1(k)+A2(k)++An(k)A_1(k) + A_2(k) + \cdots + A_n(k)109+710^9 + 7로 나눈 나머지를 출력한다.