E - Una hormiga trabajadora

Languages: C, C++, Java, Pascal, Python, Tiger, JavaScript, Haskell, C#
Time & Memory limits: (details)

Una hormiga está parada en la esquina superior izquierda de una mesa, que tiene forma cuadrada. En cada unidad de tiempo, la hormiga se mueve un paso hacia abajo o hacia la derecha y quiere llegar a la esquina inferior derecha, que es donde están los granos de azúcar que pretende llevarse. Debido a acciones humanas, ahora hay una zona de la mesa por la cual la hormiga no puede caminar. Esta zona es un rectángulo,que se ubica en la esquina superior derecha. La hormiga solo puede caminar por la mesa siempre que no entre en la zona prohibida, pero puede moverse por los bordes de esta.

La tarea consiste en calcular la cantidad de formas que tiene la hormiga, para ir desde su posición inicial a la esquina inferior derecha, sin pasar por la zona prohibida.

Input

La entrada comienza con un entero $T$ $(1 \leq  T \leq 10)$ en una línea, que indica la cantidad de casos de prueba. Cada caso consiste en una línea con cuatro enteros $N$, $M$ $(2 \leq N, M \leq 400,000)$, $A$ $(1 \le A < N)$ y $B$ $(1 <= B < M)$ donde $N$ y $M$ son el ancho y alto del rectángulo que forma la mesa y $A$ y $B$ son el ancho y alto de la zona que la hormiga no puede visitar.

Output

Por cada caso se debe imprimir en una línea la cantidad de formas en que la hormiga puede hacer su recorrido módulo $1,000,000,007$.

Sample test(s)

Input
3 2 2 1 1 4 2 3 1 6 6 5 5
Output
5 9 37