Smart city

On the longest street in Skopje, there are different shops, one next to each other. For simplicity, lets assume that they are numbered with consecutive numbers from 1 to M (1, 2, 3, …, M).

Mysteriously, at this moment, there are no burek-stores and pharmacies on the street, but there are many shops that are selling lottery tickets (lotto-shops). The mayor of Skopje decided to remove all lotto-shops from the street and replace them with either burek-stores or pharmacies. According to city rules, between every 2 pharmacies there should be a distance of at least P (i.e. at least P-1 other shops should appear between them that are not pharmacies). Similarly, between every two burek stores there should be a distance of at least B (i.e. at least B-1 other shops should appear between them that are not burek stores).

If you know the positions of all N lotto-shops on the street, calculate the number of ways in which they may be transformed into pharmacies and burek stores (print the solution modulo 10^9 + 7).



Input

The first line contains two integer numbers P and B (1 <= P, B <= 1018), the required distance between every 2 pharmacies and burek-stores, respectively. The second line contains one integer number N (1 <= N <= 100 000), the number of lotto-shops.

The following line contains N positive integer numbers Ki (1 <= Ki <= 1018), the positions of the lotto shops, given in increasing order.



Output

Print the required answer, modulo 1 000 000 007.



Constraints

Time limit: 500 milliseconds
Memory limit: 256 megabytes



Examples


input
5 2
5
1 2 4 6 8
output
5


There are 5 possibilities: BPBBB, BPBBP, PBBBB, PBBBP, PBBPB.


Subtasks
 1) In test cases worth 11 points, (1 <= N <= 20; 1 <= P, B, Ki <= 500)
 2) In other test cases worth 21 points, (1 <= N <= 100; 1 <= P, B, Ki <= 100 000)
 3) In other test cases worth 23 points, (1 <= N <= 1 000)
 4) To earn all 100 points, your solution must work for the input constraints presented in the “Input” section.



 Submit your code