时间限制:C/C++/Rust/Pascal 5秒,其他语言10秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
传闻在魔神战争时期,为了平定幽冥之患,八位奇人聚首桃都山,布下了「八门七门大阵」。
具体来说,桃都山两侧可以看作是两条平行的生死边界线。仙家在生之界筑起了用来净世的护摩坛,又在死之界唤醒了幽蝶。
大阵的运转规则是:在边界两侧各取两点,每点分别向对方两点引一条直线,则会相交产生两个新的阵眼。若这两个阵眼所成的直线与生死边界线严格垂直,便能搭起一条通路,以隐去朱赤引火幽蝶为代价,换取生死的绝对隔断。
形式化地,在二维平面直角坐标系

中,给定两条平行于

轴的生死边界线

(生之界)和

(死之界)。
在生之界

上筑有

座互不相同的护摩坛,记为

,其横坐标由数组

给出(即
)
)。
在死之界

上也有

朵互不相同的幽蝶,记为

,其横坐标由数组

给出(即
)
)。
称一个四元组
)
是一条能成功隔断生死的「镇幽通路」,当且仅当满足以下条件:
1.

且

(护摩坛与幽蝶必须各取两处,互不相同);
2. 护摩坛

与幽蝶

所在直线,和护摩坛

与幽蝶

所在直线,交于阳阵眼

;
3. 护摩坛

与幽蝶

所在直线,和护摩坛

与幽蝶

所在直线,交于阴阵眼

;
4. 贯通两阵眼的直线

严格垂直于

轴(即垂直于生死边界线)。
请你计算,在这漫山遍野的护摩坛与幽蝶中,一共能构筑出多少条平息幽冥的「镇幽通路」,答案对

取模。
输入描述:
第一行一个整数
,表示数据组数。
对于每组数据,第一行一个整数
,表示护摩坛与幽蝶的数量。
第二行
个互不相同的整数
,表示护摩坛的横坐标数组。
第三行
个互不相同的整数
,分别表示幽蝶的横坐标数组。
输出描述:
对于每组数据,输出一行一个整数,表示能成功构筑出的「镇幽通路」的数量对
取模的结果。
示例1
输入
复制
2
4
1 4 5 7
2 3 6 8
5
1 9 2 4 3
6 4 8 7 5