在一个 $10^9$ 行 $10^9$ 列的棋盘上有 $n$ 个城堡和 $m$ 个障碍物。每个城堡或障碍物占据恰好一个格子,且所有被占据的格子互不相同。如果两个城堡位于同一行或同一列,且它们之间没有障碍物或其他城堡,则这两个城堡可以互相攻击。更正式地说,设 $(i, j)$ 为第 $i$ 行第 $j$ 列的格子。位于 $(i_1, j_1)$ 和 $(i_2, j_2)$ 的两个城堡可以互相攻击,当且仅当满足以下条件之一:
- $i_1 = i_2$,且对于所有 $\min(j_1, j_2) < j < \max(j_1, j_2)$,在 $(i_1, j)$ 处没有障碍物或城堡。
- $j_1 = j_2$,且对于所有 $\min(i_1, i_2) < i < \max(i_1, i_2)$,在 $(i, j_1)$ 处没有障碍物或城堡。
请找到一种放置最少数量额外障碍物的方法,使得没有任何两个城堡可以互相攻击。注意,额外障碍物不能放置在已经有城堡或障碍物的格子上。
输入格式
输入包含多组测试数据。第一行包含一个整数 $T$,表示测试数据的组数。对于每组测试数据:
第一行包含一个整数 $n$ ($2 \le n \le 200$),表示城堡的数量。 接下来的 $n$ 行,第 $i$ 行包含两个整数 $r_i$ 和 $c_i$ ($1 \le r_i, c_i \le 10^9$),表示第 $i$ 个城堡位于第 $r_i$ 行第 $c_i$ 列。 下一行包含一个整数 $m$ ($0 \le m \le 200$),表示障碍物的数量。 接下来的 $m$ 行,第 $i$ 行包含两个整数 $r'_i$ 和 $c'_i$ ($1 \le r'_i, c'_i \le 10^9$),表示第 $i$ 个障碍物位于第 $r'_i$ 行第 $c'_i$ 列。
保证所有被占据的格子互不相同。同时保证所有测试数据的 $n$ 之和与 $m$ 之和均不超过 $400$。
输出格式
对于每组测试数据:
如果可以阻止城堡互相攻击,首先输出一行,包含一个整数 $k$,表示所需额外障碍物的最小数量。然后输出 $k$ 行,其中第 $i$ 行包含两个空格分隔的整数 $x_i$ 和 $y_i$ ($1 \le x_i, y_i \le 10^9$),表示你将在格子 $(x_i, y_i)$ 处放置第 $i$ 个额外障碍物。如果存在多种有效答案,输出其中任意一种即可。
如果无法阻止城堡互相攻击,则输出一行 -1。
样例
样例输入 1
4 7 1 3 6 6 4 7 2 1 6 3 4 1 2 6 3 3 4 6 4 3 1 2 1 1 2 2 0 3 1 1 1 3 3 3 1 1 2 3 1 1 1 3 2 3 0
样例输出 1
2 2 3 4 6 0 1 2 3 -1
说明
第一个样例测试数据如下图所示。我们只需要添加 2 个额外障碍物(标记为星号),一个位于 $(2, 3)$,另一个位于 $(4, 6)$。
对于第二个样例测试数据,仅有的两个城堡不在同一行或同一列,因此不需要障碍物。