사방치기

각 이동에서 x가 X 이상, y가 Y 이상 증가해야 할 때 (0,0)에서 (N,N)까지 가는 격자 경로의 수를 1e9+7로 나눈 나머지를 구합니다.

보통7동적 계획법조합론수학누적 합아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

사방치기를 한다. 원점에서 출발해 격자점 (N,N)(N, N)까지 뛰어가는 것이 목표다. 한 번의 도약은 격자점 (x1,y1)(x_1, y_1)에서 (x2,y2)(x_2, y_2)로 옮겨 가는 것이고, x1<x2x_1 < x_2이면서 y1<y2y_1 < y_2여야 한다.

짧게 뛰는 것은 싫다. 그래서 두 격자점 사이를 뛸 때마다 xx좌표는 최소 XX만큼, yy좌표는 최소 YY만큼 늘어나야 한다고 정했다.

이 조건을 지키면서 (0,0)(0, 0)에서 (N,N)(N, N)까지 가는 서로 다른 경로의 개수를 구한다. 한쪽 경로에서만 방문하는 격자점이 하나라도 있으면 두 경로는 서로 다르다.

힌트: 답은 109+710^9 + 7로 나눈 나머지로 구한다. pp109+710^9 + 7처럼 소수이고 xxpp로 나누어떨어지지 않는 정수이면 xxp21(modp)x \cdot x^{p-2} \equiv 1 \pmod p이다.

입력

첫째 줄에 세 정수 NN, XX, YY가 공백 하나로 구분되어 주어진다. 1X,YN1061 \le X, Y \le N \le 10^6이다.

출력

경로의 개수는 매우 커질 수 있다. 그래서 그 개수를 10000000071\,000\,000\,007(109+710^9 + 7)로 나눈 나머지를 한 줄에 출력한다.