题号:NC277688
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述

注:本题和

版本的区别在于排列已知,询问概率。

小

有一个

的
排列,她从中选择了一个数字作为自己的幸运数。

小

每次会询问小

一个区间
![[l,r]](https://www.nowcoder.com/equation?tex=%5Bl%2Cr%5D)
,随后小

会告诉他这个区间里有多少个数
小于等于她的幸运数。

直到

次询问全部完成,如果小

依旧无法唯一确定幸运数是什么,他会在全部可能的数字里等概率随机挑选一个。

你需要直接输出

次询问后他猜对数字的概率,保证数据有解。

长度为

的
排列是由

这

个整数、按任意顺序组成的数组,每个整数恰好出现一次。例如,
![[2,3,1,5,4]](https://www.nowcoder.com/equation?tex=%5B2%2C3%2C1%2C5%2C4%5D)
是一个排列,但
![[1,2,2]](https://www.nowcoder.com/equation?tex=%5B1%2C2%2C2%5D)
不是一个排列(数组中的

出现了两次),
![[1,3,4]](https://www.nowcoder.com/equation?tex=%5B1%2C3%2C4%5D)
也不是一个排列(长度为

但数组中有

)。
输入描述:

每个测试文件均包含多组测试数据。第一行输入一个整数
)
代表数据组数,每组测试数据描述如下:
第一行输入两个整数
代表小
的排列长度和最多询问次数。
第二行输入
个整数
代表排列元素,保证数字两两不同。

随后

行,每行输入三个整数
)
代表询问区间、区间内小于等于幸运数的数字个数。
除此之外,保证所有的
之和不超过
,所有的
之和不超过
。
本题数据保证有解。
输出描述:

对于每一组测试数据,在一行上输出一个整数,代表小

猜中幸运数的概率。特别的,如果概率为

,则需要在同一行上额外输出一个整数,代表小

的幸运数。

可以证明答案可以表示为一个不可约分数

,为了避免精度问题,请直接输出整数
)
作为答案,其中
)
,

是满足

的整数。