P17399 [ICPC 2018 Shenyang R] Rainbow Graph

Description

A graph without loops or multiple edges is known as a simple graph. A vertex-colouring is an assignment of colours to each vertex of a graph. A proper vertex-colouring is a vertex-colouring in which no edge connects two identically coloured vertices. A vertex-colouring with $n$ colours of an undirected simple graph is called an $n$-rainbow colouring if every colour appears once, and only once, on all the adjacent vertices of each vertex. Note that an $n$-rainbow colouring is not a proper colouring, since adjacent vertices may share the same colour. An undirected simple graph is called an $n$-rainbow graph if the graph can admit at least one legal $n$-rainbow colouring. Two $n$-rainbow graphs $G$ and $H$ are called isomorphic if, between the sets of vertices in $G$ and $H$, a bijective mapping $f : V(G) \to V(H)$ exists such that two vertices in $G$ are adjacent if and only if their images in $H$ are adjacent. Your task in this problem is to count the number of distinct non-isomorphic $n$-rainbow graphs having $2n$ vertices and report that number modulo a prime number $p$.

Input Format

The input contains several test cases, and the first line contains a positive integer $T$ indicating the number of test cases which is up to $1000$. For each test case, the only line contains two integers $n$ and $p$ where $1 \le n \le 64$ , $n+1 \le p \le 2^{30}$ and $p$ is a prime. We guarantee that the numbers of test cases satisfying $n \ge 16$ , $n \ge 32$ and $n \ge 48$ are no larger than $200$, $100$ and $20$ respectively.

Output Format

For each test case, output a line containing `"Case #x: y"` (without quotes), where $x$ is the test case number starting from $1$ , and $y$ is the answer modulo $p$.

Explanation/Hint

If you came up with a solution such that the time complexity is asymptotic to $p(n)$, the number of partitions of $n$, or similar, you might want to know $p(16) = 231$, $p(32) = 8349$, $p(48) = 147273$ and $p(64) = 1741630$ . The following figures illustrate all the non-isomorphic rainbow graphs mentioned in the first four sample cases. :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/oisnlk5o.png) Figure 1: the non-isomorphic 1-rainbow graph with 2 vertices ![](https://cdn.luogu.com.cn/upload/image_hosting/soynp62n.png) Figure 2: the non-isomorphic 2-rainbow graph with 4 vertices ![](https://cdn.luogu.com.cn/upload/image_hosting/i2evxac8.png) Figure 3: the non-isomorphic 3-rainbow graphs with 6 vertices ![](https://cdn.luogu.com.cn/upload/image_hosting/zuok594l.png) Figure 4: the non-isomorphic 4-rainbow graphs with 8 vertices :::