小 L 有一个被划分为 $n \times m$ 网格单元的盒子。
初始时,所有单元格都是空的。你可以进行若干次操作,每次操作可以是以下两种类型之一:
- 选择一个单元格,并在与该单元格处于同一行和同一列的所有空单元格中各放入一个小球。
- 选择一个单元格,并在穿过该单元格的两条对角线上的所有空单元格中各放入一个小球。
例如,在一个 $5 \times 5$ 的盒子中,选择单元格 $(3, 4)$ 进行第一种或第二种操作将分别得到以下结果:
左图显示了第一种操作,右图显示了第二种操作。
小 L 想知道:将盒子中的所有单元格都填满球所需的最少操作次数是多少?
注意:你可以在已经包含球的单元格上进行操作。
输入格式
每个测试文件包含多个测试用例。第一行包含测试用例的数量 $T$ ($1 \le T \le 10^4$)。接下来是测试用例的描述。
每个测试用例的第一行包含两个整数 $n$ 和 $m$ ($1 \le n, m \le 10^3$),表示盒子的行数和列数。
在每个测试文件中,保证所有测试用例的 $n \times m$ 之和不超过 $10^6$。
输出格式
对于每个测试用例:
第一行应包含一个整数 $p$ ($1 \le p \le n \times m$),表示最少操作次数。
接下来的 $p$ 行每行包含三个整数 $op, x, y$ ($op \in \{1, 2\}, 1 \le x \le n, 1 \le y \le m$),表示一次操作。如果 $op = 1$,在单元格 $(x, y)$ 进行第一种类型的操作;如果 $op = 2$,在单元格 $(x, y)$ 进行第二种类型的操作。
样例
输入样例 1
2 3 4 2 2
输出样例 1
3 2 2 2 2 2 3 1 2 4 2 1 1 1 1 2 2