题号:NC309411
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
小蓝考上了世界上最好的魔法师学校,然而入学第一件事就是智力测试。老师给出了一个

大小的棋盘,同时对每行每列设置了权重

和

。因此,对于第

行第

列的格子
)
,其权重为一个二元组
)
。
小蓝可以在格子之间进行移动,若某时刻小蓝在格子
)
,那么他可以一步走到任意的格子
)
或
)
,其中

满足:
1. **行移动规则**:

,且不存在

使得

。即

必须是所有行权重中,比

大的数值里最小的那个(紧邻的下一级权重)。
2. **列移动规则**:

,且不存在

使得

。即

必须是所有列权重中,比

大的数值里最小的那个。
简而言之,小蓝每次只能让行权重或列权重“升级”到紧邻的下一个等级。
之后,老师提出了

个问题,第

个问题为:假设小蓝从格子
)
出发,移动到格子
)
有多少种不同的走法?答案对

取模。
输入描述:
输入的第一行包含三个正整数
,相邻整数之间用一个空格分隔。
第二行包含
个正整数
,相邻整数之间用一个空格分隔。
第三行包含
个正整数
,相邻整数之间用一个空格分隔。
接下来
行,第
行包含四个正整数
,相邻整数之间用一个空格分隔,分别表示起点的行、列坐标和终点的行、列坐标。
输出描述:
输出
行,每行包含一个整数,依次表示每个问题的答案。
备注:
- 对于 20% 的评测用例,
。
- 对于所有评测用例,
,
,
,
。