리틀 L은 크기가 $L \times W \times H$인 초콜릿 조각을 가지고 있습니다. 초콜릿 내부에는 $n$개의 아몬드가 들어 있으며, $i$번째 아몬드는 단위 정육면체 $[x_i - 1, x_i] \times [y_i - 1, y_i] \times [z_i - 1, z_i]$의 중심에 위치해 있습니다. 어느 두 아몬드도 같은 위치를 차지하지 않습니다.
이제 리틀 L은 이 초콜릿 조각을 여러 개의 더 작은 조각으로 자르려고 합니다. 구체적으로, 그는 세 차원을 따라 각각 $p, q, r$번의 절단을 수행하려고 합니다. 각 절단은 정수 좌표를 따라 이루어져야 하며, 같은 차원의 같은 좌표에서 두 번 절단할 수 없고, 초콜릿의 가장자리(즉, 좌표 $0$ 또는 $L, W, H$)에서는 절단할 수 없습니다.
형식적으로, $x$ 방향에서 좌표 $k$ ($0 < k < L$)에서의 절단은 평면 $x = k$를 따라 초콜릿을 자르는 것을 의미합니다. $y$ 방향과 $z$ 방향에 대해서도 동일하게 적용됩니다.
또한, 절단 후 만들어지는 $(p + 1)(q + 1)(r + 1)$개의 초콜릿 조각 각각에 동일한 개수의 아몬드가 포함되기를 바랍니다. 리틀 L은 이 조건을 만족하는 본질적으로 서로 다른 절단 방법의 수를 알고 싶어 합니다. 어떤 차원의 한 위치에서 첫 번째 방법은 절단하고 두 번째 방법은 절단하지 않는 위치가 존재한다면 두 절단 방법은 서로 다른 것으로 간주합니다. 결과를 $10^9 + 7$로 나눈 나머지를 출력하세요.
입력
각 테스트 케이스의 첫 번째 줄에는 초콜릿의 크기를 나타내는 세 정수 $L, W, H$ ($1 \le L, W, H \le 10^9$)가 주어집니다.
두 번째 줄에는 $x$, $y$, $z$ 방향의 절단 횟수를 각각 나타내는 세 정수 $p, q, r$ ($0 \le p, q, r \le 10^6$)가 주어집니다.
세 번째 줄에는 아몬드의 개수를 나타내는 정수 $n$ ($1 \le n \le 10^6$)이 주어집니다.
다음 $n$개의 줄에는 각각 아몬드의 위치를 나타내는 세 정수 $x_i, y_i, z_i$ ($1 \le x_i \le L, 1 \le y_i \le W, 1 \le z_i \le H$)가 주어집니다. 모든 순서쌍 $(x_i, y_i, z_i)$는 서로 다름이 보장됩니다.
출력
한 줄에 결과를 $10^9 + 7$로 나눈 나머지를 나타내는 정수를 출력합니다.
예제
입력 1
4 4 1 1 1 0 4 1 2 1 2 4 1 3 1 1 4 3 1
출력 1
1
입력 2
3 3 3 1 1 1 3 1 1 1 2 2 2 3 3 3
출력 2
0
입력 3
9 9 9 1 1 1 8 1 1 2 2 2 8 1 9 1 2 8 9 8 2 1 9 2 9 9 8 1 8 9 7
출력 3
180