#arc101d. [arc101_d]Robots and Exits

[arc101_d]Robots and Exits

问题陈述

在数轴上有 NN 个机器人和 MM 个出口。这些机器人和出口的坐标都是不同的整数。对于每一个 ii (1iN1 \leq i \leq N),第 ii 个机器人的坐标是 xix_i。对于每一个 jj (1jM1 \leq j \leq M),第 jj 个出口的坐标是 yjy_j

斯努克可以重复执行以下两种操作中的任意一种来同时移动所有机器人:

  • 将数轴上所有机器人的坐标加 11
  • 将数轴上所有机器人的坐标减 11

当机器人的位置与某个出口的位置相同时,机器人将从数轴上消失,通过该出口离开。斯努克将继续执行操作,直到所有机器人都消失。

当所有机器人消失时,有多少种出口的组合可以被机器人使用?求解模 109+710^9 + 7 的计数值。这里,当在两种组合中使用不同的出口时,两种组合被认为是不同的。

约束条件

  • 1N,M1051 \leq N, M \leq 10^5
  • 1x1<x2<...<xN1091 \leq x_1 < x_2 < ... < x_N \leq 10^9
  • 1y1<y2<...<yM1091 \leq y_1 < y_2 < ... < y_M \leq 10^9
  • 所有给定的坐标都是整数。
  • 所有给定的坐标都是不同的。

输入格式

输入以以下格式从标准输入中给出:

NN MM x1x_1 x2x_2 ...... xNx_N y1y_1 y2y_2 ...... yMy_M

输出格式

输出机器人消失时可以使用的出口组合的数量,模 109+710^9 + 7

示例输入 1

2 2
2 3
1 4

示例输出 1

3

从左边开始计算,第 ii 个机器人称为机器人 ii,第 jj 个出口称为出口 jj。存在三种可能的出口组合(机器人 11 使用的出口,机器人 22 使用的出口)如下:

  • (出口 11,出口 11)
  • (出口 11,出口 22)
  • (出口 22,出口 22)

示例输入 2

3 4
2 5 10
1 3 7 13

示例输出 2

8

每个机器人的出口可以独立选择,所以有 23=82^3 = 8 种可能的出口组合。

示例输入 3

4 1
1 2 4 5
3

示例输出 3

1

每个机器人都使用出口 11

示例输入 4

4 5
2 5 7 11
1 3 6 9 13

示例输出 4

6

示例输入 5

10 10
4 13 15 18 19 20 21 22 25 27
1 5 11 12 14 16 23 26 29 30

示例输出 5

22