레오나르도 수

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

문제

유명한 피보나치 수는 피보나치라고도 불리는 피사의 레오나르도가 남긴 유일한 발견이 아니다. L0=L1=1L_0 = L_1 = 1이고 i1i \ge 1에 대해 Li+1=Li+Li1+1L_{i+1} = L_i + L_{i-1} + 1로 정의하자. 이 수열 (Li)(L_i)을 레오나르도 수라고 부른다.

두 정수 nnkk가 주어질 때, 다음 식의 값을 구하라.

L0k+L1k+L2k++LnkL_0^k + L_1^k + L_2^k + \cdots + L_n^k

이 값은 매우 커질 수 있으므로, 십진법으로 나타냈을 때의 마지막 99자리만 출력한다.

표준 입력에서 nnkk를 읽어 위 합을 계산하고, 결과의 마지막 99자리를 표준 출력에 출력하는 프로그램을 작성하라.

입력

한 줄에 두 양의 정수 nnkk가 공백으로 구분되어 주어진다.

  • 1k131 \le k \le 13
  • 1n26411 \le n \le 2^{64} - 1 (nn은 64비트 부호 없는 정수 범위에 들어간다)

출력

L0k+L1k++LnkL_0^k + L_1^k + \cdots + L_n^k의 마지막 99자리, 즉 이 값을 10910^9으로 나눈 나머지를 출력한다. 값이 99자리보다 짧으면 앞을 00으로 채워 항상 정확히 99자리를 출력한다.