Noya 先生有一只喜欢啃木头的宠物仓鼠。
一天,Noya 先生带回家一个尺寸为 $L \times W \times H$ 的长方体木块,这意味着它的长度为 $L$ 个单位,宽度为 $W$ 个单位,高度为 $H$ 个单位,被划分为 $L \times W \times H$ 个单位立方体。以木块的一个顶点为原点,长度方向为 $x$ 轴,宽度方向为 $y$ 轴,高度方向为 $z$ 轴,建立空间直角坐标系 $O-xyz$。$x$ 坐标在 $[i - 1, i)$、$y$ 坐标在 $[j - 1, j)$ 且 $z$ 坐标在 $[k - 1, k)$ 的单位立方体记作 $(i, j, k)$。
注意:木块的长度不一定大于宽度(即不要求 $W \le L$);这些词汇仅用于确定方向。
Noya 先生不希望木块被他的仓鼠完全啃掉,因此他决定对其进行加固。加固位于 $(i, j, k)$ 的单位立方体的花费为 $V(i, j, k)$。此外,有三个矩阵 $A, B, C$ 分别表示来自三个正交视图(主视图、侧视图和俯视图)的限制:
- 对于矩阵 $A = \{a_{ij}\}_{H \times L}$,如果 $a_{ij} = 0$,则对于所有 $1 \le p \le W$,位于 $(j, p, i)$ 的立方体都不能被加固。如果 $a_{ij} = 1$,则这些立方体中至少有一个必须被加固。
- 对于矩阵 $B = \{b_{ij}\}_{H \times W}$,如果 $b_{ij} = 0$,则对于所有 $1 \le q \le L$,位于 $(q, j, i)$ 的立方体都不能被加固。如果 $b_{ij} = 1$,则这些立方体中至少有一个必须被加固。
- 对于矩阵 $C = \{c_{ij}\}_{W \times L}$,如果 $c_{ij} = 0$,则对于所有 $1 \le r \le H$,位于 $(j, i, r)$ 的立方体都不能被加固。如果 $c_{ij} = 1$,则这些立方体中可以有任意数量(包括零个)被加固。
注意:Noya 先生对每个单位立方体最多只能加固一次。
注意:对于矩阵 $C$,非零值并不要求至少加固一个单位立方体。
在上述条件下,Noya 先生希望最小化加固木块的总花费。你能帮助他吗?
注意:你不需要考虑单位立方体悬空的问题。
输入格式
第一行包含一个正整数 $T$ ($1 \le T \le 5 \times 10^3$),表示测试用例的数量。
对于每个测试用例,第一行包含三个正整数 $L, W, H$ ($1 \le L \times W \times H \le 10^3$),表示木块的长度、宽度和高度。
下一行包含 $L \times W \times H$ 个整数。其中第 $[(i - 1) \times W + j - 1] \times H + k$ 个整数为 $V(i, j, k)$ ($-10^9 \le V(i, j, k) \le 10^9$)。
接下来 $H$ 行。第 $i$ 行是一个长度为 $L$ 的二进制字符串,记作 $a_{i1}a_{i2} \cdots a_{iL}$,表示矩阵 $A$ 的第 $i$ 行。
接下来 $H$ 行。第 $i$ 行是一个长度为 $W$ 的二进制字符串,记作 $b_{i1}b_{i2} \cdots b_{iW}$,表示矩阵 $B$ 的第 $i$ 行。
接下来 $W$ 行。第 $i$ 行是一个长度为 $L$ 的二进制字符串,记作 $c_{i1}c_{i2} \cdots c_{iL}$,表示矩阵 $C$ 的第 $i$ 行。
保证单个测试点中所有测试用例的 $L \times W \times H$ 之和不超过 $5 \times 10^3$。
输出格式
对于每个测试用例,第一行包含一个字符串 YES 或 NO,表示 Noya 先生的条件是否可以被满足。
如果条件可以满足,则在第二行输出一个整数,表示加固长方体的最小花费;在第三行输出一个非负整数,表示加固的单位立方体数量 $k$;接下来 $k$ 行,每行包含三个正整数,表示每个被加固的单位立方体的坐标。注意,每个单位立方体最多只能被加固一次。
如果存在多个有效解,输出其中任意一个均被视为正确。
样例
输入样例 1
2 3 2 2 1 1 4 5 -1 4 -1 9 1 9 8 1 011 111 11 11 111 111 1 2 2 1 2 3 4 0 0 01 01 1 1
输出样例 1
YES 5 6 2 1 1 2 2 1 3 1 1 1 1 2 2 1 2 3 2 2 NO