B - Hipercubo

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

En una espacio $N$-dimensional, una celda se denota por las coordenadas $X_1, X_2, X_3, ..., X_N$ cualquier celda con alguna coordenada negativa se colorea de blanco. La celda origen (la que posee todas sus coordenadas con valor 0) se colorea de negro.  El color de la celda $(X_1, X_2, X_3, ..., X_N)$ está determinado por las celdas de las que depende, estas son las celdas con coordenadas $(X_1 - 1, X_2, X_3, ..., X_N)$, $(X_1, X_2 - 1, X_3, ..., X_N)$, ..., $(X_1, X_2, X_3, ..., X_N - 1)$, la celda se colorea de blanco si y solo si la cantidad de celdas negras de las que depende es par sino se colorea de negro.

Dado dos coordenadas de este espacio, una de inicio y una final, se debe de calcular la cantidad de celdas negras que hay en el hipercubo que definen.

Input

La primera línea contiene un entero $T$ $(1 \leq T \leq 50$), que define la cantidad de casos de prueba. Por cada caso de prueba la primera línea es un entero $N$ $(0 \lt N \lt 9)$ que define la dimensión del hipercubo y luego dos líneas de $N$ números cada una que define las coordenadas de inicio y final del hipercubo. Todas las coordenadas son números enteros no negativos con a lo sumo $15$ dígitos.

Output

Por cada caso de prueba se debe de imprimir la cantidad de celdas negras que hay en el hipercubo definido módulo $1000000009$.

Sample test(s)

Input
3 3 4 0 4 7 9 8 2 0 3 10 9 4 0 3 0 2 6 8 1 5
Output
9 32 22