#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
#include<map>
#include<set>
#include<stack>
#include<queue>
#include<string>
#include<iterator>
#include<string>
#include<sstream>
#include<cassert>
#include<ctime>
#include<cmath>
#define MP make_pair
#define PB push_back
#define X first
#define Y second
#define oo 2000000000
#define MOD 1000000007
#define LL long long int
#define PII pair<int,int>
#define DEBUG 0
using namespace std;
int N,a,M,b;
vector<int> adj[1002];
bool mark[1002];
bool vis[1002];
vector<int> v,g;
int cc,mp[1002],s1,s2;
void dfs(int u){
vis[u]=true;
v.PB(u);mp[u]=v.size()-1;
for(int i=0;i<adj[u].size();i++){
int v=adj[u][i];
if(vis[v]) continue;
dfs(v);
}
}
bool check(int mask,int l){
for(int i=0;i<l;i++) if(mask&1<<i){
int u=v[i],t;
for(int j=0;j<adj[u].size();j++){
t=mp[adj[u][j]];
if(t<l && (mask&1<<t)) return false;
}
}
return true;
}
bool check2(int mask,int l){
for(int i=0;i<l;i++) if(mask&1<<i){
int u=v[i+s1],t;
for(int j=0;j<adj[u].size();j++){
t=mp[adj[u][j]]-s1;
if(t>=0 && (mask&1<<t)) return false;
}
}
return true;
}
int main(){
int x;
memset(mark,false,sizeof(mark));
scanf("%d%d%d",&N,&a,&b);
scanf("%d",&M);
for(int i=0;i<M;i++) scanf("%d",&x), mark[x] = true;
for(int i=1;i<=N;i++){
if(mark[i]) continue;
if(i*a <= N && !mark[i*a]){
adj[i].PB(i*a);
adj[i*a].PB(i);
}
if(i*b <= N && !mark[i*b]){
adj[i].PB(i*b);
adj[i*b].PB(i);
}
}
LL ans=1;
memset(vis,false,sizeof(vis));
for(int i=1;i<=N;i++){
if(mark[i]) continue;
if(!vis[i]){
LL cnt=0;v.clear();g.clear();
dfs(i);
cc=v.size();s1=cc/2,s2=cc-s1;
assert(s1<=20 && s2<=20);
//for(int i=0;i<v.size();i++) printf("(%d,%d)\n",i,v[i]);
for(int i=0;i<(1<<s1);i++){
if(!check(i,s1)) continue;
else g.PB(i);//, printf("g : %d\n",i);
}
//printf("%d\n",g.size());
int mask;
for(int i=0;i<(1<<s2);i++){
if(!check2(i,s2)) continue;
else{
if(!i){
cnt+=g.size();
continue;
}
mask=(1<<s1)-1;
for(int j=0;j<s2;j++){
if(!(i&(1<<j)) ) continue;
int u=v[s1+j];
for(int k=0;k<adj[u].size();k++){
if(mp[adj[u][k]] >= s1) assert(!( i & 1 << (mp[adj[u][k]]-s1)) );
if(mp[adj[u][k]] < s1) mask&=~(1<<mp[adj[u][k]]);
}
}
//printf("i = %d , mask = %d\n",i,mask);
mask=~mask;
for(int j=0;j<g.size();j++) cnt+=(!(mask&g[j]));
//printf("cnt = %lld\n",cnt);
}
}
cnt%=MOD;
//printf("%lld\n",cnt);
ans=(ans*cnt)%MOD;
}
}
printf("%lld\n",ans);
return 0;
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxjc3RkbGliPgojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTx2ZWN0b3I+CiNpbmNsdWRlPGNzdHJpbmc+CiNpbmNsdWRlPG1hcD4KI2luY2x1ZGU8c2V0PgojaW5jbHVkZTxzdGFjaz4KI2luY2x1ZGU8cXVldWU+CiNpbmNsdWRlPHN0cmluZz4KI2luY2x1ZGU8aXRlcmF0b3I+CiNpbmNsdWRlPHN0cmluZz4KI2luY2x1ZGU8c3N0cmVhbT4KI2luY2x1ZGU8Y2Fzc2VydD4KI2luY2x1ZGU8Y3RpbWU+CiNpbmNsdWRlPGNtYXRoPgoKI2RlZmluZSBNUCBtYWtlX3BhaXIKI2RlZmluZSBQQiBwdXNoX2JhY2sKI2RlZmluZSBYIGZpcnN0CiNkZWZpbmUgWSBzZWNvbmQKI2RlZmluZSBvbyAyMDAwMDAwMDAwCiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKI2RlZmluZSBMTCBsb25nIGxvbmcgaW50CiNkZWZpbmUgUElJIHBhaXI8aW50LGludD4KI2RlZmluZSBERUJVRyAwCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgTixhLE0sYjsKdmVjdG9yPGludD4gYWRqWzEwMDJdOwpib29sIG1hcmtbMTAwMl07CmJvb2wgdmlzWzEwMDJdOwp2ZWN0b3I8aW50PiB2LGc7CmludCBjYyxtcFsxMDAyXSxzMSxzMjsKCnZvaWQgZGZzKGludCB1KXsKICAgIHZpc1t1XT10cnVlOwogICAgdi5QQih1KTttcFt1XT12LnNpemUoKS0xOwogICAgZm9yKGludCBpPTA7aTxhZGpbdV0uc2l6ZSgpO2krKyl7CiAgICAgICAgaW50IHY9YWRqW3VdW2ldOwogICAgICAgIGlmKHZpc1t2XSkgY29udGludWU7CiAgICAgICAgZGZzKHYpOwogICAgfQp9CmJvb2wgY2hlY2soaW50IG1hc2ssaW50IGwpewogICAgZm9yKGludCBpPTA7aTxsO2krKykgaWYobWFzayYxPDxpKXsKICAgICAgICBpbnQgdT12W2ldLHQ7CiAgICAgICAgZm9yKGludCBqPTA7ajxhZGpbdV0uc2l6ZSgpO2orKyl7CiAgICAgICAgICAgIHQ9bXBbYWRqW3VdW2pdXTsKICAgICAgICAgICAgaWYodDxsICYmIChtYXNrJjE8PHQpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHRydWU7Cn0KYm9vbCBjaGVjazIoaW50IG1hc2ssaW50IGwpewogICAgZm9yKGludCBpPTA7aTxsO2krKykgaWYobWFzayYxPDxpKXsKICAgICAgICBpbnQgdT12W2krczFdLHQ7CiAgICAgICAgZm9yKGludCBqPTA7ajxhZGpbdV0uc2l6ZSgpO2orKyl7CiAgICAgICAgICAgIHQ9bXBbYWRqW3VdW2pdXS1zMTsKICAgICAgICAgICAgaWYodD49MCAmJiAobWFzayYxPDx0KSkgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB0cnVlOwp9CmludCBtYWluKCl7CiAgICBpbnQgeDsKICAgIG1lbXNldChtYXJrLGZhbHNlLHNpemVvZihtYXJrKSk7CiAgICBzY2FuZigiJWQlZCVkIiwmTiwmYSwmYik7CiAgICBzY2FuZigiJWQiLCZNKTsKICAgIGZvcihpbnQgaT0wO2k8TTtpKyspIHNjYW5mKCIlZCIsJngpLCBtYXJrW3hdID0gdHJ1ZTsKICAgIGZvcihpbnQgaT0xO2k8PU47aSsrKXsKICAgICAgICBpZihtYXJrW2ldKSBjb250aW51ZTsKICAgICAgICBpZihpKmEgPD0gTiAmJiAhbWFya1tpKmFdKXsKICAgICAgICAgICAgYWRqW2ldLlBCKGkqYSk7CiAgICAgICAgICAgIGFkaltpKmFdLlBCKGkpOwogICAgICAgIH0KICAgICAgICBpZihpKmIgPD0gTiAmJiAhbWFya1tpKmJdKXsKICAgICAgICAgICAgYWRqW2ldLlBCKGkqYik7CiAgICAgICAgICAgIGFkaltpKmJdLlBCKGkpOwogICAgICAgIH0KICAgIH0KICAgIExMIGFucz0xOwogICAgbWVtc2V0KHZpcyxmYWxzZSxzaXplb2YodmlzKSk7CiAgICBmb3IoaW50IGk9MTtpPD1OO2krKyl7CiAgICAgICAgaWYobWFya1tpXSkgY29udGludWU7CiAgICAgICAgaWYoIXZpc1tpXSl7CiAgICAgICAgICAgIExMIGNudD0wO3YuY2xlYXIoKTtnLmNsZWFyKCk7CiAgICAgICAgICAgIGRmcyhpKTsKICAgICAgICAgICAgY2M9di5zaXplKCk7czE9Y2MvMixzMj1jYy1zMTsKICAgICAgICAgICAgYXNzZXJ0KHMxPD0yMCAmJiBzMjw9MjApOwogICAgICAgICAgICAvL2ZvcihpbnQgaT0wO2k8di5zaXplKCk7aSsrKSBwcmludGYoIiglZCwlZClcbiIsaSx2W2ldKTsKICAgICAgICAgICAgZm9yKGludCBpPTA7aTwoMTw8czEpO2krKyl7CiAgICAgICAgICAgICAgICBpZighY2hlY2soaSxzMSkpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgZWxzZSBnLlBCKGkpOy8vLCBwcmludGYoImcgOiAlZFxuIixpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvL3ByaW50ZigiJWRcbiIsZy5zaXplKCkpOwogICAgICAgICAgICBpbnQgbWFzazsKICAgICAgICAgICAgZm9yKGludCBpPTA7aTwoMTw8czIpO2krKyl7CiAgICAgICAgICAgICAgICBpZighY2hlY2syKGksczIpKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgaWYoIWkpewogICAgICAgICAgICAgICAgICAgICAgICBjbnQrPWcuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbWFzaz0oMTw8czEpLTE7CiAgICAgICAgICAgICAgICAgICAgZm9yKGludCBqPTA7ajxzMjtqKyspewogICAgICAgICAgICAgICAgICAgICAgICBpZighKGkmKDE8PGopKSApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgdT12W3MxK2pdOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGs9MDtrPGFkalt1XS5zaXplKCk7aysrKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG1wW2Fkalt1XVtrXV0gPj0gczEpIGFzc2VydCghKCBpICYgMSA8PCAobXBbYWRqW3VdW2tdXS1zMSkpICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihtcFthZGpbdV1ba11dIDwgczEpIG1hc2smPX4oMTw8bXBbYWRqW3VdW2tdXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy9wcmludGYoImkgPSAlZCAsIG1hc2sgPSAlZFxuIixpLG1hc2spOwogICAgICAgICAgICAgICAgICAgIG1hc2s9fm1hc2s7CiAgICAgICAgICAgICAgICAgICAgZm9yKGludCBqPTA7ajxnLnNpemUoKTtqKyspIGNudCs9KCEobWFzayZnW2pdKSk7CiAgICAgICAgICAgICAgICAgICAgLy9wcmludGYoImNudCA9ICVsbGRcbiIsY250KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjbnQlPU1PRDsKICAgICAgICAgICAgLy9wcmludGYoIiVsbGRcbiIsY250KTsKICAgICAgICAgICAgYW5zPShhbnMqY250KSVNT0Q7CiAgICAgICAgfQogICAgfQogICAgcHJpbnRmKCIlbGxkXG4iLGFucyk7CiAgICByZXR1cm4gMDsKfQo=