在 Numbata 国有 $N$ 座城市,编号从 $1$ 到 $N$。目前,它们之间没有任何道路连接。因此,这 $N$ 座城市中的每一座都提议修建一条道路。
城市 $i$ 希望与城市 $A_i$ 相连,因此城市 $i$ 提议修建一条连接城市 $i$ 和城市 $A_i$ 的直接双向道路。保证没有两座城市互相提议连接对方。换句话说,不存在一对整数 $i$ 和 $j$ 使得 $A_i = j$ 且 $A_j = i$。同时保证,如果所有提议的道路都被修建,那么任意两座城市之间都可以通过一系列修建的道路相互连通。
城市 $i$ 还希望所修建的道路使用特定的材料。每种材料可以用一个整数表示(例如,$0$ 代表沥青,$1$ 代表木材等)。连接城市 $i$ 和城市 $A_i$ 的道路所能使用的材料由包含 $M_i$ 个整数的数组 $B_i$ 表示:$[(B_i)_1, (B_i)_2, \dots, (B_i)_{M_i}]$。这意味着连接城市 $i$ 和城市 $A_i$ 的道路可以使用 $B_i$ 中的任意一种材料修建。
共有 $K$ 名工人负责修建道路。每名工人只熟悉一种材料,因此只能修建使用特定材料的道路。具体来说,第 $i$ 名工人只能修建材料为 $C_i$ 的道路。每名工人最多只能修建一条道路。你需要分配每名工人去修建一条道路,使得任意两座城市之间都可以通过一系列修建的道路相互连通。
输入格式
输入的第一行包含两个整数:$N$ 和 $K$ ($3 \le N \le 2000; 1 \le K \le 2000$),分别代表城市数量和工人数量。接下来的 $N$ 行,每行包含若干整数:$A_i, M_i, (B_i)_1, (B_i)_2, \dots, (B_i)_{M_i}$ ($1 \le A_i \le N; A_i \neq i; 1 \le M_i \le 10\,000; 0 \le (B_i)_1 < (B_i)_2 < \dots < (B_i)_{M_i} \le 10^9$),代表城市 $i$ 希望修建的道路。保证所有 $M_i$ 之和不超过 $10\,000$。同时保证没有两座城市互相提议连接对方,且如果所有提议的道路都被修建,任意两座城市之间都可以通过一系列修建的道路相互连通。最后一行包含 $K$ 个整数:$C_i$ ($0 \le C_i \le 10^9$),代表工人所熟悉的材料。
输出格式
如果无法分配工人修建道路使得任意两座城市之间都能相互连通,直接输出一行 -1。否则,对于每名工人,按照输入顺序,输出一行两个整数(用空格分隔):$u$ 和 $v$(顺序不限)。这意味着该工人修建了一条连接城市 $u$ 和城市 $v$ 的直接双向道路。如果某名工人不修建任何道路,则输出 0 0。每对城市最多只能分配给一名工人。只要任意两座城市之间可以通过一系列修建的道路相互连通,你可以输出任何合法的分配方案。
样例
样例输入 1
4 5 2 2 1 2 3 2 2 3 4 2 3 4 2 2 4 5 1 2 3 4 5
样例输出 1
1 2 2 3 3 4 0 0 4 2
说明 1
我们可以分配工人修建以下道路: 第一名工人修建连接城市 $1$ 和城市 $2$ 的道路。 第二名工人修建连接城市 $2$ 和城市 $3$ 的道路。 第三名工人修建连接城市 $3$ 和城市 $4$ 的道路。 第四名工人不修建任何道路。 * 第五名工人修建连接城市 $4$ 和城市 $2$ 的道路。
因此,现在任意两座城市之间都可以通过一系列修建的道路相互连通。
样例输入 2
4 5 2 2 10 20 3 2 2 3 4 2 3 4 2 2 4 5 1 2 3 4 5
样例输出 2
-1
说明 2
没有工人能够修建连接城市 $1$ 的道路,因此城市 $1$ 必然是孤立的。