N개의 노래로 길이 P의 재생목록을 만들 때, 모든 노래가 최소 한 번 등장하고 같은 노래의 두 등장 사이에 다른 노래가 최소 M개 있어야 하는 경우의 수를 센다.
수빈이는 알고리즘 캠프에서 음악을 들으면서 문제를 풀고 있다. 수빈이의 스마트폰에는 노래 NNN개가 저장되어 있고, 오늘 수빈이는 노래 PPP곡을 들으려고 한다. 수빈이는 다음 두 조건을 모두 만족하는 플레이리스트를 만들려고 한다. 플레이리스트에는 같은 노래를 여러 번 추가해도 된다.
플레이리스트는 길이가 PPP인 노래 순서열이고, 순서가 다르면 서로 다른 플레이리스트로 센다. NNN, MMM, PPP가 주어졌을 때, 수빈이가 만들 수 있는 플레이리스트의 개수를 구하는 프로그램을 작성하시오.
첫째 줄에 NNN, MMM, PPP가 공백으로 구분되어 주어진다. (1≤N≤1001 \le N \le 1001≤N≤100, 0≤M≤N0 \le M \le N0≤M≤N, N≤P≤100N \le P \le 100N≤P≤100)
첫째 줄에 수빈이가 만들 수 있는 플레이리스트의 개수를 출력한다. 개수가 매우 커질 수 있으므로 1,000,000,007로 나눈 나머지를 출력한다.
N=1N = 1N=1, M=0M = 0M=0, P=3P = 3P=3이면 가능한 플레이리스트는 (노래1, 노래1, 노래1) 하나뿐이다.
N=1N = 1N=1, M=1M = 1M=1, P=3P = 3P=3이면 가능한 플레이리스트가 없다.
N=2N = 2N=2, M=0M = 0M=0, P=3P = 3P=3일 때 (노래1, 노래1, 노래1)과 (노래2, 노래2, 노래2)는 노래 두 개를 모두 쓰지 않으므로 세지 않는다.
N=2N = 2N=2, M=1M = 1M=1, P=4P = 4P=4이면 가능한 플레이리스트는 (노래1, 노래2, 노래1, 노래2)와 (노래2, 노래1, 노래2, 노래1) 둘이다.