Iahub wants to meet his girlfriend Iahubina. They both live in Ox axis (the horizontal axis). Iahub lives at point 0 and Iahubina at point d.
Iahub has n positive integers a1, a2, ..., an. The sum of those numbers is d. Suppose p1, p2, ..., pn is a permutation of {1,2,...,n}. Then, let b1=ap1, b2=ap2 and so on. The array b is called a "route". There are n! different routes, one for each permutation p.
Iahub's travel schedule is: he walks b1 steps on Ox axis, then he makes a break in point b1. Then, he walks b2 more steps on Ox axis and makes a break in point b1+b2. Similarly, at j-th (1≤j≤n) time he walks bj more steps on Ox axis and makes a break in point b1+b2+...+bj.
Iahub is very superstitious and has k integers which give him bad luck. He calls a route "good" if he never makes a break in a point corresponding to one of those k numbers. For his own curiosity, answer how many good routes he can make, modulo 1000000007 (109+7).
The first line contains an integer n (1≤n≤24). The following line contains n integers: a1,a2,...,an (1≤ai≤109).
The third line contains integer k (0≤k≤2). The fourth line contains k positive integers, representing the numbers that give Iahub bad luck. Each of these numbers does not exceed 109.
Output a single integer − the answer of Iahub's dilemma modulo 1000000007 (109+7).
3
2 3 5
2
5 7
1
3
2 2 2
2
1 3
6
In the first case consider six possible orderings:
In the second case, note that it is possible that two different ways have the identical set of stopping. In fact, all six possible ways have the same stops: [2, 4, 6], so there's no bad luck for Iahub.