#L3411. 「2020-2021 集训队作业」Permutation

    ID: 3268 传统题 5000ms 512MiB 尝试: 9 已通过: 1 难度: 6 上传者: 标签>组合数学容斥原理数论组合计数二重进位错位排列

「2020-2021 集训队作业」Permutation

题目描述

给出 n,Pn, P,设

$$f_n = \left(\sum_{p\text{ 是长度为 }n\text{ 的排列}} [\exists i \in [1,n] , p_i = i][\exists i \in [1,n] , p_i = n - i + 1]\right) \bmod P $$

你需要求出

i=1nfi\bigoplus_{i=1}^n f_i

的值。


输入格式

输入一行两个整数 n,Pn, P


输出格式

一行一个整数表示答案。


样例

输入

2 100000

输出

1

解释
n=1n=1 时排列 (1)(1) 满足上述两个条件,故 f1=1f_1 = 1
n=2n=2 时排列 (1,2),(2,1)(1,2),(2,1) 均有一个条件不满足,故 f2=0f_2 = 0
所以答案为 10=11 \oplus 0 = 1


数据范围与提示

对于 100%100\% 的数据,1n1071 \leq n \leq 10^7n+1P109n + 1 \leq P \leq 10^9

测试点编号 nn \leq PP
1 18 无特殊限制
2 60
3 300
4 1000 =998244353=998244353
5 5000
6 3×1043 \times 10^4
7 10510^5
8 3×1053 \times 10^5
9 5×1055 \times 10^5
10 1000 是质数
11 10410^4
12 10510^5
13 10610^6
14 10710^7
15 5000 无特殊限制