짝수 빗물
시간 제한3초메모리 제한512 MB
n개의 기둥 중 k개를 0으로 만들 때 고인 빗물의 넓이가 짝수가 되는 경우의 수를 10^9+7로 나눈 나머지로 구합니다. n은 25,000 이하이고 k는 25 이하입니다.
문제
너비가 인 기둥 개가 옆면끼리 맞닿은 채 왼쪽에서 오른쪽으로 놓여 있다. 왼쪽에서 번째 기둥의 높이는 이다.
비가 내리면 일부 자리에 물이 고일 수 있다. 짧은 기둥이 두 높은 기둥 사이에 있을 때 그렇다.
정확히는, 기둥의 내부나 경계에 속하지 않는 점 가운데, 같은 높이에서 왼쪽의 어떤 기둥과 오른쪽의 어떤 기둥에 동시에 걸쳐 있는 점에는 물이 남는다.
고인 물의 넓이가 관심사다. 모든 가 정수이면 이 넓이도 정수이다. 노인들의 미신에 따르면 고인 물의 넓이가 로 나누어떨어질 때 행복이 찾아온다.
오늘 비가 올 예정이다. 그 전에 개의 기둥을 제거할 계획이다. 제거한다는 것은 해당 기둥의 높이를 으로 바꾸는 것이다. 가지 제거 방법 중 고인 물의 넓이가 짝수가 되는 경우는 몇 가지인가? 답은 로 나눈 나머지로 출력한다.
입력
첫 줄에 두 정수 과 가 주어진다 (, ). 둘째 줄에는 개의 정수 이 주어진다 ().
출력
고인 물의 넓이가 짝수가 되도록 개의 기둥을 제거하는 방법의 수를 로 나눈 나머지로 한 줄에 출력한다.
힌트
첫 번째 샘플 설명이다. 왼쪽의 큰 그림은 초기 상태이다. 작은 그림들은 기둥 하나를 제거하는 7가지 경우를 각각 보여 준다(화살표가 제거할 기둥을 가리킨다). 회색 영역이 고인 물이다. 4가지 경우에서 고인 물의 넓이(각 그림 옆 숫자)가 짝수이다.
