#P17399. [ICPC 2018 Shenyang R] Rainbow Graph

[ICPC 2018 Shenyang R] Rainbow Graph

Problem 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 nn colours of an undirected simple graph is called an nn-rainbow colouring if every colour appears once, and only once, on all the adjacent vertices of each vertex. Note that an nn-rainbow colouring is not a proper colouring, since adjacent vertices may share the same colour.

An undirected simple graph is called an nn-rainbow graph if the graph can admit at least one legal nn-rainbow colouring. Two nn-rainbow graphs GG and HH are called isomorphic if, between the sets of vertices in GG and HH, a bijective mapping f:V(G)→V(H)f : V(G) \to V(H) exists such that two vertices in GG are adjacent if and only if their images in HH are adjacent.

Your task in this problem is to count the number of distinct non-isomorphic nn-rainbow graphs having 2n2n vertices and report that number modulo a prime number pp.

Input Format

The input contains several test cases, and the first line contains a positive integer TT indicating the number of test cases which is up to 10001000.

For each test case, the only line contains two integers nn and pp where 1≤n≤641 \le n \le 64 , n+1≤p≤230n+1 \le p \le 2^{30} and pp is a prime.

We guarantee that the numbers of test cases satisfying n≥16n \ge 16 , n≥32n \ge 32 and n≥48n \ge 48 are no larger than 200200, 100100 and 2020 respectively.

Output Format

For each test case, output a line containing "Case #x: y" (without quotes), where xx is the test case number starting from 11 , and yy is the answer modulo pp.

5
1 11059
2 729557
3 1461283
4 5299739
63 49121057
Case #1: 1
Case #2: 1
Case #3: 2
Case #4: 3
Case #5: 5694570

Hint

If you came up with a solution such that the time complexity is asymptotic to p(n)p(n), the number of partitions of nn, or similar, you might want to know p(16)=231p(16) = 231, p(32)=8349p(32) = 8349, p(48)=147273p(48) = 147273 and p(64)=1741630p(64) = 1741630 .

The following figures illustrate all the non-isomorphic rainbow graphs mentioned in the first four sample cases.

:::align{center}

Figure 1: the non-isomorphic 1-rainbow graph with 2 vertices

Figure 2: the non-isomorphic 2-rainbow graph with 4 vertices

Figure 3: the non-isomorphic 3-rainbow graphs with 6 vertices

Figure 4: the non-isomorphic 4-rainbow graphs with 8 vertices :::