#D6561. Filling the Grid

    ID: 5454 Type: Default 1000ms 256MiB

Filling the Grid

Filling the Grid

Suppose there is a h × w grid consisting of empty or full cells. Let's make some definitions:

  • r_{i} is the number of consecutive full cells connected to the left side in the i-th row (1 ≤ i ≤ h). In particular, r_i=0 if the leftmost cell of the i-th row is empty.
  • c_{j} is the number of consecutive full cells connected to the top end in the j-th column (1 ≤ j ≤ w). In particular, c_j=0 if the topmost cell of the j-th column is empty.

In other words, the i-th row starts exactly with r_i full cells. Similarly, the j-th column starts exactly with c_j full cells.

These are the r and c values of some 3 × 4 grid. Black cells are full and white cells are empty.

You have values of r and c. Initially, all cells are empty. Find the number of ways to fill grid cells to satisfy values of r and c. Since the answer can be very large, find the answer modulo 1000000007 (10^{9} + 7). In other words, find the remainder after division of the answer by 1000000007 (10^{9} + 7).

Input

The first line contains two integers h and w (1 ≤ h, w ≤ 10^{3}) — the height and width of the grid.

The second line contains h integers r_{1}, r_{2}, …, r_{h} (0 ≤ r_{i} ≤ w) — the values of r.

The third line contains w integers c_{1}, c_{2}, …, c_{w} (0 ≤ c_{j} ≤ h) — the values of c.

Output

Print the answer modulo 1000000007 (10^{9} + 7).

Examples

Input

3 4 0 3 1 0 2 3 0

Output

2

Input

1 1 0 1

Output

0

Input

19 16 16 16 16 16 15 15 0 5 0 4 9 9 1 4 4 0 8 16 12 6 12 19 15 8 6 19 19 14 6 9 16 10 11 15 4

Output

797922655

Note

In the first example, this is the other possible case.

In the second example, it's impossible to make a grid to satisfy such r, c values.

In the third example, make sure to print answer modulo (10^9 + 7).

inputFormat

Input

The first line contains two integers h and w (1 ≤ h, w ≤ 10^{3}) — the height and width of the grid.

The second line contains h integers r_{1}, r_{2}, …, r_{h} (0 ≤ r_{i} ≤ w) — the values of r.

The third line contains w integers c_{1}, c_{2}, …, c_{w} (0 ≤ c_{j} ≤ h) — the values of c.

outputFormat

Output

Print the answer modulo 1000000007 (10^{9} + 7).

Examples

Input

3 4 0 3 1 0 2 3 0

Output

2

Input

1 1 0 1

Output

0

Input

19 16 16 16 16 16 15 15 0 5 0 4 9 9 1 4 4 0 8 16 12 6 12 19 15 8 6 19 19 14 6 9 16 10 11 15 4

Output

797922655

Note

In the first example, this is the other possible case.

In the second example, it's impossible to make a grid to satisfy such r, c values.

In the third example, make sure to print answer modulo (10^9 + 7).

样例

19 16
16 16 16 16 15 15 0 5 0 4 9 9 1 4 4 0 8 16 12
6 12 19 15 8 6 19 19 14 6 9 16 10 11 15 4
797922655

</p>