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