#P11402. [Code+#8 初赛] 图

[Code+#8 初赛] 图

背景

搬运自 Code+ #8 初赛。

题目描述

本题中,对于一个无重边自环的无向图,称图上的一条道路为简单路当且仅当其不经过重复节点。即,假设该道路经过的节点依次为 (u1,u2,⋯ ,uk)(u_1,u_2,\cdots,u_k),则这条道路为简单路当且仅当 u1,u2,⋯ ,uku_1,u_2,\cdots,u_k 两两不同。

给出大质数 PP 和 qq 次询问,每组询问给出正整数 nn,你需要求出满足以下所有条件的有标号无向图个数,对 PP 取模:

  1. 图有 nn 个节点且不存在重边与自环;
  2. 图上不存在边数为 33 的简单路,即图上无法找到四个两两不同的节点 u1,u2,u3,u4u_1,u_2,u_3,u_4 满足 (u1,u2),(u2,u3),(u3,u4)(u_1,u_2),(u_2,u_3),(u_3,u_4) 均在图中;
  3. 在满足条件 1 和 2 的基础上,图的边数最多。

输入格式

输入的第一行包含两个正整数 qq, PP,保证 q≤100,000q \le 100,000,分别表示询问次数和模数。

接下来 qq 行每行包含一个正整数 nn,保证 n≤3×107n \le 3 \times 10^7,描述一次询问。

输出格式

对于每组询问输出一行一个非负整数,表示满足条件的有标号无向图个数对 PP 取模的值。

2 199932539
1
6
1
10

提示

【样例解释】

以下样例解释将用 11 到 nn 之间的整数给每个节点进行编号。

对于第一组询问,只有边集为 ∅\varnothing 的图满足条件。

对于第二组询问,其中两个满足条件的图的边集分别为 (1,2)(2,3)(1,3)(4,5)(5,6)(4,6){(1,2)(2,3)(1,3)(4,5)(5,6)(4,6)} 和 (1,3)(3,5)(1,5)(2,4)(4,6)(2,6){(1,3)(3,5)(1,5)(2,4)(4,6)(2,6)}。

【数据范围】

对于全部数据,保证 108<P<10910^8\lt P\lt 10^9 且 PP 是素数。

本题共 55 个测试点:

测试点 11 保证 n,q≤8n,q\le8,分值为 2020 分;

测试点 22 保证 n,q≤200n,q\le200,分值为 1515 分;

测试点 33 保证 n,q≤3000n,q\le3000,分值为 1515 分;

测试点 44 保证 n≤500,000,q≤100,000n\le500,000,q\le100,000,分值为 2020 分;

测试点 55 保证 n≤3×107,q≤100,000n\le3\times10^7,q\le100,000,分值为 3030 分。