CF1545C.AquaMoon and Permutations

省选/NOI-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Cirno has prepared nn arrays of length nn each. Each array is a permutation of nn integers from 11 to nn. These arrays are special: for all 1≤i≤n1 \leq i \leq n, if we take the ii-th element of each array and form another array of length nn with these elements, the resultant array is also a permutation of nn integers from 11 to nn. In the other words, if you put these nn arrays under each other to form a matrix with nn rows and nn columns, this matrix is a Latin square.

Afterwards, Cirno added additional nn arrays, each array is a permutation of nn integers from 11 to nn. For all 1≤i≤n1 \leq i \leq n, there exists at least one position 1≤k≤n1 \leq k \leq n, such that for the ii-th array and the (n+i)(n + i)-th array, the kk-th element of both arrays is the same. Notice that the arrays indexed from n+1n + 1 to 2n2n don't have to form a Latin square.

Also, Cirno made sure that for all 2n2n arrays, no two arrays are completely equal, i. e. for all pair of indices 1≤i<j≤2n1 \leq i \lt j \leq 2n, there exists at least one position 1≤k≤n1 \leq k \leq n, such that the kk-th elements of the ii-th and jj-th array are different.

Finally, Cirno arbitrarily changed the order of 2n2n arrays.

AquaMoon calls a subset of all 2n2n arrays of size nn good if these arrays from a Latin square.

AquaMoon wants to know how many good subsets exist. Because this number may be particularly large, find it modulo 998 244 353998\,244\,353. Also, she wants to find any good subset. Can you help her?

Cirno 准备了 nn 个长度均为 nn 的数组。每个数组都是 11 到 nn 这 nn 个整数的一个排列。这些数组具有特殊性质:对所有 1≤i≤n1 \leq i \leq n,若取每个数组的第 ii 个元素,并将它们组成一个长度为 nn 的新数组,则该新数组也是 11 到 nn 这 nn 个整数的一个排列。换言之,若将这 nn 个数组纵向堆叠,构成一个 nn 行 nn 列的矩阵,则该矩阵是一个拉丁方。

随后,Cirno 额外添加了 nn 个数组,每个数组同样是 11 到 nn 这 nn 个整数的一个排列。对于所有 1≤i≤n1 \leq i \leq n,均存在至少一个位置 1≤k≤n1 \leq k \leq n,使得第 ii 个数组与第 (n+i)(n + i)-个数组在第 kk 个位置上的元素相同。注意:下标从 n+1n + 1 到 2n2n 的这 nn 个数组本身不必构成拉丁方。

此外,Cirno 确保在全部 2n2n 个数组中,任意两个数组互不完全相等;即对任意下标对 1≤i<j≤2n1 \leq i < j \leq 2n,均存在至少一个位置 1≤k≤n1 \leq k \leq n,使得第 ii 个数组与第 jj 个数组在第 kk 个位置上的元素不同。

最后,Cirno 将这 2n2n 个数组的顺序任意打乱。

AquaMoon 将大小为 nn 的数组子集称为“好”的,当且仅当这些数组构成一个拉丁方。

AquaMoon 想知道一共有多少个“好”子集。由于该数目可能非常大,请输出其对 998 244 353998\,244\,353 取模的结果。此外,她还希望找出任意一个“好”子集。你能帮她吗?

输入格式

The input consists of multiple test cases. The first line contains a single integer tt (1≤t≤1001 \leq t \leq 100) — the number of test cases.

The first line of each test case contains a single integer nn (5≤n≤5005 \leq n \leq 500).

Then 2n2n lines followed. The ii-th of these lines contains nn integers, representing the ii-th array.

It is guaranteed, that the sum of nn over all test cases does not exceed 500500.

输入包含多个测试用例。第一行包含一个整数 tt(1≤t≤1001 \leq t \leq 100),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn(5≤n≤5005 \leq n \leq 500)。

随后是 2n2n 行。其中第 ii 行包含 nn 个整数,表示第 ii 个数组。

保证所有测试用例的 nn 值之和不超过 500500。

输出格式

For each test case print two lines.

In the first line, print the number of good subsets by modulo 998 244 353998\,244\,353.

In the second line, print nn indices from 11 to 2n2n — indices of the nn arrays that form a good subset (you can print them in any order). If there are several possible answers — print any of them.

对每个测试用例,输出两行。

第一行,输出好子集的数量对 998 244 353998\,244\,353 取模的结果。

第二行,输出 nn 个从 11 到 2n2n 的下标——即构成好子集的 nn 个数组的下标(可按任意顺序输出)。若存在多个可能的答案,输出任意一个即可。

输入输出样例

  • 输入#1

    3
    7
    1 2 3 4 5 6 7
    2 3 4 5 6 7 1
    3 4 5 6 7 1 2
    4 5 6 7 1 2 3
    5 6 7 1 2 3 4
    6 7 1 2 3 4 5
    7 1 2 3 4 5 6
    1 2 3 4 5 7 6
    1 3 4 5 6 7 2
    1 4 5 6 7 3 2
    1 5 6 7 4 2 3
    1 6 7 5 2 3 4
    1 7 6 2 3 4 5
    1 7 2 3 4 5 6
    5
    4 5 1 2 3
    3 5 2 4 1
    1 2 3 4 5
    5 2 4 1 3
    3 4 5 1 2
    2 3 4 5 1
    1 3 5 2 4
    4 1 3 5 2
    2 4 1 3 5
    5 1 2 3 4
    6
    2 3 4 5 6 1
    3 1 2 6 4 5
    6 1 2 3 4 5
    5 6 1 3 2 4
    4 3 6 5 2 1
    5 6 1 2 3 4
    4 5 6 1 2 3
    3 4 5 6 1 2
    1 2 3 4 5 6
    2 5 4 1 6 3
    3 2 5 4 1 6
    1 4 3 6 5 2

    输出#1

    1
    1 2 3 4 5 6 7
    2
    1 3 5 6 10
    4
    1 3 6 7 8 9

说明/提示

In the first test case, the number of good subsets is 11. The only such subset is the set of arrays with indices 11, 22, 33, 44, 55, 66, 77.

In the second test case, the number of good subsets is 22. They are 11, 33, 55, 66, 1010 or 22, 44, 77, 88, 99.

在第一个测试用例中,好子集的数量为 11。唯一的好子集是索引为 11、22、33、44、55、66、77 的数组构成的集合。

在第二个测试用例中,好子集的数量为 22。它们分别是 11、33、55、66、1010 或 22、44、77、88、99。

输入解题思路,AI测评打分。不知道怎么写?

首页