마천루

아직 제출이 없습니다시간 제한6초메모리 제한512 MB

문제

마천루는 종이와 연필로 푸는 퍼즐이다. n×nn \times n 정사각 격자에서 진행하고, 모든 칸에는 건물이 하나씩 서 있다. 격자의 각 행과 각 열에는 높이가 11인 건물, 높이가 22인 건물, 이런 식으로 높이가 nn인 건물까지 정확히 하나씩 놓인다. 각 행과 각 열의 양쪽 끝에는 숫자가 적혀 있을 수 있다. 이 숫자는 그 자리에서 바라볼 때 보이는 건물의 개수이고, 높은 건물은 그 뒤에 있는 낮은 건물을 가린다. 퍼즐을 풀 때는 격자 바깥의 숫자만 주어지고, 각 칸에 놓인 건물의 높이를 알아내야 한다.

크기가 n×nn \times n인 퍼즐에서 행 하나만 떼어 내 생각하자. 그 행을 왼쪽에서 볼 때 보이는 건물의 수와 오른쪽에서 볼 때 보이는 건물의 수를 안다면, 높이 11부터 nn까지의 건물을 그 행에 배치하는 방법은 몇 가지인가?

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 한 줄에 정수 세 개, nn (1n50001 \le n \le 5000), left\text{left} (1leftn1 \le \text{left} \le n), right\text{right} (1rightn1 \le \text{right} \le n)로 주어진다. nn은 행의 크기이고, left\text{left}right\text{right}는 각각 왼쪽과 오른쪽에서 보이는 건물의 개수다. 입력은 0이 세 개 있는 줄로 끝난다.

출력

각 테스트 케이스마다 조건을 만족하는 배치의 수를 1,000,000,007로 나눈 나머지를 한 줄에 하나씩 출력한다. 오타가 아니고, 마지막 자리는 7이다. 여분의 공백은 출력하지 않으며, 답과 답 사이에 빈 줄도 넣지 않는다.