대각선 아래의 경로
\(n \times m\) 격자의 왼쪽 위 점 \((0,0)\)에서 오른쪽 아래 점 \((n,m)\)까지 이동하려고 한다.
점 \((i,j)\)에서 첫 번째 좌표 \(i\)는 아래쪽으로 갈수록 증가하고, 두 번째 좌표 \(j\)는 오른쪽으로 갈수록 증가한다. 따라서 격자에는 아래쪽으로 \(n\)칸, 오른쪽으로 \(m\)칸이 있다.
이동할 때는 다음 조건을 모두 만족해야 한다.
- 격자 위의 선만 따라 이동한다.
- 한 번에 아래쪽 또는 오른쪽으로 한 칸만 이동한다.
- \((0,0)\)과 \((n,m)\)을 잇는 대각선보다 위쪽에 있는 점은 통과할 수 없다. 대각선 위에 있는 점은 통과할 수 있다.
다음 그림은 \(3 \times 4\) 격자에서 통과할 수 있는 점을 나타낸다. 검은 점은 통과할 수 있는 점, 흰 점은 통과할 수 없는 점이며 점선은 \((0,0)\)과 \((3,4)\)를 잇는 대각선이다.

조건을 만족하면서 \((0,0)\)에서 \((n,m)\)까지 이동하는 경로의 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 두 자연수 \(n\)과 \(m\)이 공백을 사이에 두고 주어진다.
출력
조건을 만족하는 경로의 수를 \(1,000,009\)로 나눈 나머지를 출력한다.
제한 사항
- \(1 \le n,m \le 1,000\)
예제 입력 1
3 4
예제 출력 1
5
예제 설명 1
\(3 \times 4\) 격자에서 조건을 만족하는 경로는 다음 그림과 같이 모두 5가지이다.

코멘트