만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

사방치기

시간 제한2초메모리 제한512 MB

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

보통10점 중 7점

유형
동적 계획법, 조합론, 수학, 누적 합
정답자
아직 제출이 없습니다

문제

사방치기를 한다. 원점에서 출발해 격자점 (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로 나눈 나머지로 구한다. pp가 109+710^9 + 7처럼 소수이고 xx가 pp로 나누어떨어지지 않는 정수이면 x⋅xp−2≡1(modp)x \cdot x^{p-2} \equiv 1 \pmod p이다.

입력

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

출력

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

예제5

  1. 예제 1

    입력
    2 1 1
    
    예상 출력
    2
    
  2. 예제 2

    입력
    7 2 3
    
    예상 출력
    9
    
  3. 예제 3

    입력
    1 1 1
    
    예상 출력
    1
    
  4. 예제 4

    입력
    5 5 5
    
    예상 출력
    1
    
  5. 예제 5

    입력
    10 1 1
    
    예상 출력
    48620