When submitting a solution in C++, please select either C++14 (GCC 6-32) or C++17 (GCC 7-32) as your compiler. ×

D. Levko and Sets
time limit per test
3 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Levko loves all sorts of sets very much.

Levko has two arrays of integers a1, a2, ... , an and b1, b2, ... , bm and a prime number p. Today he generates n sets. Let's describe the generation process for the i-th set:

  1. First it has a single number 1.
  2. Let's take any element c from this set. For all j (1 ≤ j ≤ m) if number (c·aibjmod p doesn't occur in the set, then add it to the set.
  3. Repeat step 2 as long as we can add at least one element to our set.

Levko wonders, how many numbers belong to at least one set. That is, he wants to know what size is the union of n generated sets.

Input

The first line contains three integers n, m and p (1 ≤ n ≤ 104, 1 ≤ m ≤ 105, 2 ≤ p ≤ 109), p is prime.

The second line contains space-separated integers a1, a2, ... , an (1 ≤ ai < p). The third line contains space-separated integers b1, b2, ... , bm (1 ≤ bi ≤ 109).

Output

The single number — the size of the union of the sets.

Examples
Input
1 1 7
2
5
Output
3
Input
1 2 7
2
2 4
Output
3
Input
2 1 7
1 6
2
Output
1
Input
2 1 7
1 6
5
Output
2