#include<bits/stdc++.h>
using namespace std;
const int mod = 1009;
#define pb push_back
#define F first
#define S second
#define fills(x,y) memset(x,y,sizeof x)
#define rep(i,n) for(i=0;i<n;++i)
#define REP(i,k,n) for(i=k;i<=n;++i)
#define tr(i,c) for(auto &i:c)
#define fastio ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define inchar getchar
#define outchar(x) putchar(x)
#define bitcounts(n) __builtin_popcountll(n)
#define sz(a) int((a).size())
#define endl "\n"
template<typename T, typename U> static void amin(T &x, U y) { if(y < x) x = y; }
template<typename T, typename U> static void amax(T &x, U y) { if(x < y) x = y; }
template<typename T> void scan(T &x){x=0;bool neg=0;register T c=inchar();if(c=='-')
neg=1,c=inchar();while((c<48)||(c>57))c=inchar();for(;c<48||c>57;c=inchar());
for(;c>47&&c<58;c=inchar())x=(x<<3)+(x<<1)+(c&15);if(neg)x*=-1;}
template<typename T> void output(T n){bool neg=0;if(n<0)n*=-1,neg=1;char snum[65];int i=0;do {snum[i++]=n%10+'0';n/=10;}\
while(n);i=i-1; if(neg)putchar('-'); while(i>=0)outchar(snum[i--]);outchar('\n');}
inline void instr(char *str){register char c=0;register int i=0;while(c<33)c=inchar();while (c!='\n'&&c!=' '&&c!=EOF){\
str[i]=c;c=inchar();++i;}str[i]='\0';}
template<typename T> T lcm(T a, T b){return (a*(b/__gcd(a,b)));}
template<typename T> inline T MOD(T a, T b) {return (a<b ? a : a%b);}
template<typename T> T add(T a, T b, T c){T x=a+b;return (x>=c ? x-c : x);}
template<typename T> T mod_neg(T a, T b) {a=MOD(a, b);if(a<0){a+=b;}return a;}
template<typename T> T expo(T e, T n){T x=1,p=e;while(n){if(n&1)x=x*p;p=p*p;n>>=1;}return x;}
template<typename T> T power(T e, T n, T m){T x=1,p=e;while(n){if(n&1)x=MOD(x*p,m);p=MOD(p*p,m);n>>=1;}return x;}
template<typename T> T exted_euclid(T a, T b, T &x, T &y){T xx=0,yy=1;y=0;x=1;while(b){T q=a/b,t=b;b=a%b;a=t;t=xx;\
xx=x-q*xx;x=t;t=yy;yy=y-q*yy;y=t;}return a;}
template<typename T> T mod_inverse(T a, T n){T x,y;T d = exted_euclid(a, n, x, y);return (d>1?-1:mod_neg(x,n));}
#define tcsolve() int tcs; cin>>tcs;while(tcs--) solve();
const int MAX=500;
int arr[MAX];
void solve()
{
int m,n,i,j,a,p,q,x=0,y=0,both=0, rem = 0;
scanf("%d,%d,%d",&n,&p,&q);
for(int i=0; i<n; ++i){
scanf("%d,", &a);
if(a % (p*q) == 0)
++both;
else if(a%p==0 && a%q!=0)
++x;
else if(a % q == 0)
++y;
else
++rem;
}
long long ans = ((power(2,x,mod) -1 )* (power(2,y,mod) - 1)) % mod * (power(2,rem, mod));
ans = (ans%mod + (power(2,both, mod) - 1) * power(2,rem+y+x, mod)) % mod;
cout << ans;
}
int main()
{
#ifdef LOCAL
freopen("in.c","r",stdin);
//freopen("out.c","w",stdout);
#endif
solve();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBtb2QgPSAxMDA5OwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIGZpbGxzKHgseSkgbWVtc2V0KHgseSxzaXplb2YgeCkKI2RlZmluZSByZXAoaSxuKSBmb3IoaT0wO2k8bjsrK2kpCiNkZWZpbmUgUkVQKGksayxuKSBmb3IoaT1rO2k8PW47KytpKQojZGVmaW5lIHRyKGksYykgZm9yKGF1dG8gJmk6YykKI2RlZmluZSBmYXN0aW8gICAgICAgICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKSxjaW4udGllKDApLGNvdXQudGllKDApCiNkZWZpbmUgaW5jaGFyICAgICAgICAgIGdldGNoYXIKI2RlZmluZSBvdXRjaGFyKHgpICAgICAgcHV0Y2hhcih4KQojZGVmaW5lIGJpdGNvdW50cyhuKSBfX2J1aWx0aW5fcG9wY291bnRsbChuKQojZGVmaW5lIHN6KGEpIGludCgoYSkuc2l6ZSgpKQojZGVmaW5lIGVuZGwgIlxuIgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCBhbWluKFQgJngsIFUgeSkgeyBpZih5IDwgeCkgeCA9IHk7IH0KdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgYW1heChUICZ4LCBVIHkpIHsgaWYoeCA8IHkpIHggPSB5OyB9CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2NhbihUICZ4KXt4PTA7Ym9vbCBuZWc9MDtyZWdpc3RlciBUIGM9aW5jaGFyKCk7aWYoYz09Jy0nKQpuZWc9MSxjPWluY2hhcigpO3doaWxlKChjPDQ4KXx8KGM+NTcpKWM9aW5jaGFyKCk7Zm9yKDtjPDQ4fHxjPjU3O2M9aW5jaGFyKCkpOwpmb3IoO2M+NDcmJmM8NTg7Yz1pbmNoYXIoKSl4PSh4PDwzKSsoeDw8MSkrKGMmMTUpO2lmKG5lZyl4Kj0tMTt9CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgb3V0cHV0KFQgbil7Ym9vbCBuZWc9MDtpZihuPDApbio9LTEsbmVnPTE7Y2hhciBzbnVtWzY1XTtpbnQgaT0wO2RvIHtzbnVtW2krK109biUxMCsnMCc7bi89MTA7fVwKd2hpbGUobik7aT1pLTE7IGlmKG5lZylwdXRjaGFyKCctJyk7IHdoaWxlKGk+PTApb3V0Y2hhcihzbnVtW2ktLV0pO291dGNoYXIoJ1xuJyk7fQppbmxpbmUgdm9pZCBpbnN0cihjaGFyICpzdHIpe3JlZ2lzdGVyIGNoYXIgYz0wO3JlZ2lzdGVyIGludCBpPTA7d2hpbGUoYzwzMyljPWluY2hhcigpO3doaWxlIChjIT0nXG4nJiZjIT0nICcmJmMhPUVPRil7XApzdHJbaV09YztjPWluY2hhcigpOysraTt9c3RyW2ldPSdcMCc7fQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGxjbShUIGEsIFQgYil7cmV0dXJuIChhKihiL19fZ2NkKGEsYikpKTt9CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIE1PRChUIGEsIFQgYikge3JldHVybiAoYTxiID8gYSA6IGElYik7fQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGFkZChUIGEsIFQgYiwgVCBjKXtUIHg9YStiO3JldHVybiAoeD49YyA/IHgtYyA6IHgpO30KdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBtb2RfbmVnKFQgYSwgVCBiKSB7YT1NT0QoYSwgYik7aWYoYTwwKXthKz1iO31yZXR1cm4gYTt9CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZXhwbyhUIGUsIFQgbil7VCB4PTEscD1lO3doaWxlKG4pe2lmKG4mMSl4PXgqcDtwPXAqcDtuPj49MTt9cmV0dXJuIHg7fQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHBvd2VyKFQgZSwgVCBuLCBUIG0pe1QgeD0xLHA9ZTt3aGlsZShuKXtpZihuJjEpeD1NT0QoeCpwLG0pO3A9TU9EKHAqcCxtKTtuPj49MTt9cmV0dXJuIHg7fQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGV4dGVkX2V1Y2xpZChUIGEsIFQgYiwgVCAmeCwgVCAmeSl7VCB4eD0wLHl5PTE7eT0wO3g9MTt3aGlsZShiKXtUIHE9YS9iLHQ9YjtiPWElYjthPXQ7dD14eDtcCnh4PXgtcSp4eDt4PXQ7dD15eTt5eT15LXEqeXk7eT10O31yZXR1cm4gYTt9CnRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgbW9kX2ludmVyc2UoVCBhLCBUIG4pe1QgeCx5O1QgZCA9IGV4dGVkX2V1Y2xpZChhLCBuLCB4LCB5KTtyZXR1cm4gKGQ+MT8tMTptb2RfbmVnKHgsbikpO30KI2RlZmluZSB0Y3NvbHZlKCkgaW50IHRjczsgY2luPj50Y3M7d2hpbGUodGNzLS0pIHNvbHZlKCk7Cgpjb25zdCBpbnQgTUFYPTUwMDsKaW50IGFycltNQVhdOwoKdm9pZCBzb2x2ZSgpCnsKaW50IG0sbixpLGosYSxwLHEseD0wLHk9MCxib3RoPTAsIHJlbSA9IDA7CnNjYW5mKCIlZCwlZCwlZCIsJm4sJnAsJnEpOwoKZm9yKGludCBpPTA7IGk8bjsgKytpKXsKICAgIHNjYW5mKCIlZCwiLCAmYSk7CiAgICBpZihhICUgKHAqcSkgPT0gMCkKICAgICAgICArK2JvdGg7CiAgICBlbHNlIGlmKGElcD09MCAmJiBhJXEhPTApCiAgICAgICAgKyt4OwogICAgZWxzZSBpZihhICUgcSA9PSAwKQogICAgICAgICsreTsKICAgIGVsc2UKICAgICAgICArK3JlbTsKfQoKbG9uZyBsb25nICBhbnMgPSAoKHBvd2VyKDIseCxtb2QpIC0xICkqIChwb3dlcigyLHksbW9kKSAtIDEpKSAlIG1vZCAgKiAocG93ZXIoMixyZW0sIG1vZCkpOwphbnMgPSAoYW5zJW1vZCArICAocG93ZXIoMixib3RoLCBtb2QpIC0gMSkgKiBwb3dlcigyLHJlbSt5K3gsIG1vZCkpICUgbW9kOwoKY291dCA8PCBhbnM7Cn0KCmludCAgbWFpbigpCnsKI2lmZGVmIExPQ0FMCmZyZW9wZW4oImluLmMiLCJyIixzdGRpbik7Ci8vZnJlb3Blbigib3V0LmMiLCJ3IixzdGRvdXQpOwojZW5kaWYKc29sdmUoKTsKcmV0dXJuIDA7Cn0K