#L3675. 「北大集训 2021」随机游走

    ID: 5548 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>动态规划线性代数概率DP普通生成函数其他快速幂

「北大集训 2021」随机游走

题目描述

给定一张 nn 个点的有向图,点标号为 1,2,,n1,2,\dots,n,初始时对 i{1,2,,n1}\forall i\in\{1,2,\dots,n-1\},从 iii+1i+1 有一条有向边。

你可以在其中再加入 mm 条有向边(起点终点任意),允许有重边和自环。

小 A 会从 11 出发,以随机游走的形式行动,直到抵达 nn。你希望最大化小 A 从 11 移动到 nn 的期望步数。

定义随机游走是这样的一种移动方式:设小 A 当前在点 xxxxdd 条出边,则小 A 会从这 dd 条出边中等概率随机选择一条走过去。

输入格式

输入的第一行包含一个正整数 TT,表示数据组数,保证 T105T \le 10^5

接下来 TT 行,每行包含三个整数 n,m,pn,m,p,分别表示有向图的点数、你添加的边数以及答案的模数,保证 $1 \leq n \leq 10^{18}, 0 \leq m \leq 10^{18}, 2\leq p\leq 10^9+7$ 且 pp 是质数。

输出格式

输出 TT 行,第 ii 行一个整数 ansans 表示第 ii 组数据中最大的期望步数对 pp 取模后的值(可以证明答案是有理数,设其用最简分数表示为 ab\frac{a}{b},则你需要满足 ansbmodp=aans \cdot b \mod p=a,保证这样的 ansans 存在)。

样例

输入

4
3 2 97
10 25 233
6 12345 2333
1000000000 1000000000000000000 1000000007

输出

6
131
1206
161905971

数据范围与提示

测试包编号 nn \leq mm \leq TT \leq 特殊性质 分数
1 5 5 10 10
2 10210^2
3 10810^8 10210^2 20
4 50 3,000 3
5 10910^9 10510^5 m<n1m < n - 1 10
6 10910^{9} 101810^{18} 30