문제
대현이에게도 어김없이 과제폭탄이 떨어졌다!
연속된 밤샘으로 몸이 녹초가 된 대현이는 에너지 드링크 레드불 한 캔을 꿀꺽했다.
피로가 풀리나 싶더니.......

대현이는 몸이 가벼워진 걸 느낄 수 있었다!
무슨 일인지 당황해한 대현이는 거울을 보았는데 등 뒤에 날개가 달려버렸다.
‘레드불 날개를 달아줘요’ 라는 광고 모토가 실제로 이루어지자 대현이는 하늘을 날기로 결심하였다.
대현이는 현재 (0, 0) 위치에 있으며 신나게 비행하다가 (N, 0)에 도달하고 비행을 끝내려고 한다.
대현이가 매초 할 수 있는 행동은 다음과 같다.
- 날개를 펄럭임 : 대현이가 오른쪽 위로 이동함.
- 날개를 멈춤 : 대현이가 수직낙하하며 오른쪽의 고도 0 위치로 이동함. (고도가 0이라면 그대로 걸어가서 오른쪽의 고도 0 위치로 이동함.)
고도가 K 이상이 되면 산소 농도가 부족하여 대현이가 숨 쉴 수 없다.
따라서 대현이는 고도가 K 이상이 되지 않도록 비행을 하려고 한다.
대현이가 비행할 수 있는 방법의 수를 구하는 프로그램을 작성하여라.
입력
첫 번째 줄에는 비행거리 N과 최대 고도 K가 주어진다. (1 ≤ K ≤ N ≤ 2,000,000)
20점에 해당되는 데이터는 N ≤ 20을 만족한다.
50점에 해당되는 데이터는 N ≤ 2,000을 만족한다.
출력
대현이가 비행할 수 있는 방법의 수를 1,000,000,007로 나눈 나머지를 출력한다.
예제 #1
4 3
7
예제 #2
11 5
912
예제 #3
55 35
377876174
출처
EJOI 2017 예비소집 문제 3