과자 줍기
시간 제한2초메모리 제한512 MB
R×C 격자에 놓인 간식 N개가 주어질 때, 왼쪽 위에서 오른쪽 아래까지 오른쪽이나 아래로만 움직여 간식을 가장 많이 줍는 경로의 수를 1000003으로 나눈 나머지로 구합니다.
문제
Albert와 Bob은 "과자 줍기" 보드 게임을 즐겨 한다.
이 게임은 크기가 인 격자 보드에서 진행한다. 먼저 Bob이 개의 칸을 골라 과자를 하나씩 올려 둔다. 각 칸에는 과자를 최대 1개만 올릴 수 있으며, 좌측 상단 과 우측 하단 에는 과자를 올릴 수 없다. 이후 Albert는 게임 말을 칸에 올린 뒤 오른쪽 또는 아래로만 이동하여 칸에 도달해야 하며, 이동한 경로를 따라 최대한 많은 과자를 줍는다.
예를 들어 아래 그림은 , , 인 경우를 나타낸다. 편의상 과자의 위치는 크기가 인 두 배열 , 로 행과 열을 나타내며, 이 그림의 경우 , 이 된다.

S로 표시된 에서 출발해 E로 표시된 칸으로 가는 방법은 여럿 있다. 아래 그림처럼 순으로 이동하면 과자를 1개만 줍는다.

하지만 아래 그림처럼 여섯 가지 방법으로는 과자를 총 2개 주울 수 있다.

이 그림의 경우 과자를 3개 주우면서 S칸에서 E칸으로 도달하는 방법은 없다.
Albert는 입력으로 주어진 보드에서 최대한 많은 과자를 줍는 서로 다른 방법이 몇 가지인지 궁금해졌다. Albert를 도와 이 값을 구해 보자. 위 경우의 정답은 6이다.
입력
입력 첫 줄에 테스트 케이스의 수 가 주어진다. 각 테스트 케이스의 첫 줄에는 , , 값이 공백으로 구분되어 주어진다. 다음 개의 줄에는 각 줄마다 번째 과자가 놓인 칸의 행 위치 와 열 위치 가 공백으로 구분되어 주어진다.
출력
각 테스트 케이스에서 시작 칸 부터 도착 칸 까지 이동하며 최대한 많은 과자를 줍는 방법의 수를 한 줄에 출력한다. 이 수는 매우 클 수 있으므로 1000003으로 나눈 나머지를 출력한다.
제한
- 인 에 대하여:
- 이고 인 모든 쌍에 대하여: