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

在
每一个时刻,他
只能沿
向下或
向右选择一个方向移动,并可以一次前进任意正整数步;移动完成后,时刻加

。
芙宁娜派出了

名检查官,第

名检查官将在时刻

占据格子
)
并一直驻守。无论
旅行者在时刻
)
:
到达该格子;
经过该格子;
离开该格子,

他都会立即被捕获,从而导致逃脱失败。此外,在时刻

之后大门将被永久关闭,若
旅行者到达
)
时时刻已经大于

,则同样逃脱失败。

请你帮助
旅行者计算:

在所有合法方案中逃离所需的
最短时间;

在模

意义下,可以逃脱的
总方案数量。
输入描述:
本题包含多组测试数据。第一行输入一个整数
代表数据组数,每组测试数据描述如下:
一行四个整数
;
此后
行,第
行输入三个整数
――第
名检查官的坐标及出现时刻。
此外,数据保证
和
两格不会有检查官出现,但是可能会出现很多检察官出现在同一个格子的情况。
输出描述:
对于每组测试数据:
若 Traveler 无论如何都无法逃脱,输出一行-1;
否则输出两个整数,依次为 方案数量(对
取模)与 最短时间。
示例1
输入
复制
2
2 3 2 5
1 3 1
2 2 3
2 3 2 5
1 3 1
2 2 2
说明
约定:我们用

来代表旅行者的位置,数字代表对应时刻会出现的检察官,
代表右下角的大门。
在第一个样例中,最短时间为

,且仅存在一条合法路径(先向下再向右
再向右)。
在第二个样例中,旅行者必被捕获,故输出 -1。
示例2
输入
复制
1
8 8 11 8
7 4 2
3 1 2
1 8 1
2 1 1
5 4 1
5 8 3
8 5 4
7 1 1
3 6 1
7 2 1
1 7 2
备注: