마천루는 종이와 연필로 푸는 퍼즐이다. n×n 정사각 격자에서 진행하고, 모든 칸에는 건물이 하나씩 서 있다. 격자의 각 행과 각 열에는 높이가 1인 건물, 높이가 2인 건물, 이런 식으로 높이가 n인 건물까지 정확히 하나씩 놓인다. 각 행과 각 열의 양쪽 끝에는 숫자가 적혀 있을 수 있다. 이 숫자는 그 자리에서 바라볼 때 보이는 건물의 개수이고, 높은 건물은 그 뒤에 있는 낮은 건물을 가린다. 퍼즐을 풀 때는 격자 바깥의 숫자만 주어지고, 각 칸에 놓인 건물의 높이를 알아내야 한다.
크기가 n×n인 퍼즐에서 행 하나만 떼어 내 생각하자. 그 행을 왼쪽에서 볼 때 보이는 건물의 수와 오른쪽에서 볼 때 보이는 건물의 수를 안다면, 높이 1부터 n까지의 건물을 그 행에 배치하는 방법은 몇 가지인가?
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 한 줄에 정수 세 개, n (1≤n≤5000), left (1≤left≤n), right (1≤right≤n)로 주어진다. n은 행의 크기이고, left와 right는 각각 왼쪽과 오른쪽에서 보이는 건물의 개수다. 입력은 0이 세 개 있는 줄로 끝난다.
각 테스트 케이스마다 조건을 만족하는 배치의 수를 1,000,000,007로 나눈 나머지를 한 줄에 하나씩 출력한다. 오타가 아니고, 마지막 자리는 7이다. 여분의 공백은 출력하지 않으며, 답과 답 사이에 빈 줄도 넣지 않는다.