지정좌석 배치하기 2
시간 제한1초메모리 제한1024 MB
각 행의 학생을 열에 배치하는 경우의 수를 구합니다. 같은 열에서 뒤쪽 행의 높이와 행 좌석 높이의 합이 앞쪽보다 엄격히 커야 하며, 답은 10^9+7로 나눈 나머지입니다.
문제
이 문제는 지정좌석 배치하기 1 문제와 마지막 문단 및 출력만 다릅니다. 지정좌석 배치하기 1 문제의 코드로는 이 문제를 해결할 수 없습니다.
UDP대학교의 인기 교수 달구 교수님이 이번 학기에 배정받은 강의실의 정원은 명이며, 좌석은 행 열의 직사각형으로 배치되어 있습니다. 뒤에 앉은 학생도 강의를 잘 볼 수 있도록 각 행의 좌석 높이는 씩 높아집니다. 앞에서부터 행, 행, , 행이라고 할 때 행의 좌석 높이는 입니다.
달구 교수님은 출석 확인을 쉽게 하려고 지정좌석제를 실시하므로, 명의 학생은 학기 내내 같은 좌석에 앉습니다. 교수님은 학생마다 희망하는 행을 조사했고, 각 행마다 명의 학생을 선정했습니다. 행을 희망하는 학생들의 키를 이라고 합니다.
어떤 학생의 시야도 같은 열에서 앞 행에 앉은 학생에게 가려지면 안 됩니다. 구체적으로, 각 학생의 (좌석 높이 + 키)는 같은 열의 앞 행에 있는 모든 학생의 (좌석 높이 + 키)보다 커야 합니다.
달구 교수님은 이 조건을 만족하면서 모든 학생을 희망하는 행의 좌석에 배치하는 방법이 몇 가지인지 알고 싶어 합니다. 그 경우의 수를 로 나눈 나머지를 구하세요.
입력
첫 번째 줄에 , , 가 공백으로 구분되어 주어집니다.
이후 개의 줄에 걸쳐, 번째 줄에 행을 희망하는 학생 명의 키 이 공백으로 구분되어 주어집니다.
출력
조건을 만족하면서 모든 학생을 희망하는 행의 좌석에 배치하는 경우의 수를 로 나눈 나머지를 출력합니다.