{"raw_statement":[{"iden":"statement","content":"月末，一家公司的老板给公司内的 $k$ 个员工（他们被编号为 $1\\sim k$）准备了一份工资的分配方案。这份方案可以用一个长度为 $k$ 的序列 $a$ 表示，其中 $a_i$ 表示第 $i$ 个人的工资。现在，这份分配方案放在办公室的桌上，无人看管。\n\n一些员工决定通过替换的方式替换掉这份工资分配方案，来使得自己获得更多的工资。于是，一些员工自己准备了一个自行伪造、不会被老板察觉的分配方案 $b$（也是一个长度为 $k$ 的序列），并选择在一个时刻潜入办公室。他会偷看**当前**放在办公桌上的分配方案 $a^{'}$，如果该员工编号为 $i$ 且 $b_i > a^{'}_ i$，他就会把**整个分配方案**替换成 $b$。为了保证替换成功，一个员工可能会在多个时刻潜入办公室，并且可能会伪造不同的分配方案。但同一时刻最多有一个员工潜入办公室。\n\n假设一天总共有 $n$ 个时刻有员工潜入，我们将这些时刻按时间顺序从 $1$ 到 $n$ 编号。现在，你知道了在每个时刻 $t$，潜入办公室的员工 $p_t$ 和他在 $t$ 时刻伪造的分配方案 $b_t$。现在给出 $q$ 个询问，每次询问会给出一个老板的初始分配方案，请你计算出最后放在桌面上的分配方案。"},{"iden":"input","content":"第一行三个整数 $n$、$q$、$k$，表示时刻的个数、询问的个数和员工的个数；\n\n接下来 $n$ 行，每行 $k+1$ 个整数 $p_t, b_{t,1},\\cdots, b_{t_k}$，表示 $t$ 时刻潜入的员工和他准备的分配方案；\n\n接下来 $q$ 行，每行 $k$ 个整数 $a_1, \\cdots, a_k$，表示老板的初始分配方案。"},{"iden":"output","content":"输出 $q$ 行，每行 $k$ 个整数，表示最后的方案。"},{"iden":"note","content":"**【子任务】**\n\n存在 20% 的数据，$n,q\\le 1,000$\n\n存在另外 10% 的数据，$k=1$；\n\n对于所有的数据，$n,q\\le 10^5, k\\le 20$。\n\n**【提示】**\n\n本题输入、输出规模较大，建议使用 `scanf/printf` 进行输入输出。如果使用 `cin/cout`，建议在 `main` 函数开头加上 `std::ios::sync_with_stdio(0); std::cin.tie(0); std::cout.tie(0);`。"}],"translated_statement":null,"sample_group":[["5 10 3\n1 7 2 5\n2 1 4 10\n3 2 6 3\n1 8 1 4\n2 7 3 5\n4 7 8\n2 2 6\n9 10 6\n9 3 4\n8 1 6\n10 6 10\n4 9 2\n4 1 10\n7 7 8\n10 3 2\n","7 3 5\n7 3 5\n9 10 6\n7 3 5\n7 3 5\n10 6 10\n7 3 5\n7 3 5\n7 3 5\n7 3 5\n"]],"show_order":[],"formal_statement":null,"simple_statement":null,"has_page_source":false}