1
#include<cstdio> #include<algorithm> #include<cstring> #define p 1000000007 typedef long long ll; using namespace std; ll n,a,b,cnt[5],ok,ans[5]; inline ll pw(ll m,ll n) { ll b = 1; while (n > 0) { if (n & 1) b = (b*m)%p; n = n >> 1 ; m = (m*m)%p; } return b; } int main() { scanf("%lld%lld%lld",&n,&a,&b); if (a>b) swap(a,b),ok=1; for (int i=1,x;i<=n;i++) { scanf("%d",&x),x%=(a+b); cnt[(x>=a) + (x>=b) + (x>=b && x>=2*a)]++; } ans[0]=( (pw(2,cnt[1])-1)*(pw(2,cnt[2]+cnt[3])) + (pw(2,cnt[3])-cnt[3]-1+p)*(pw(2,cnt[2])) + cnt[3]*(cnt[2]?pw(2,cnt[2]-1):0) )%p; ans[2]=((cnt[2]?pw(2,cnt[2]-1):0)+cnt[3]*(cnt[2]?pw(2,cnt[2]-1):1))%p; ans[3]=(ans[2]?pw(2,cnt[2]-1):1); for (int i=0;i<4;i++) ans[i]=(ans[i]*pw(2,cnt[0]))%p; if (ok) swap(ans[0],ans[1]); for (int i=0;i<4;i++) printf("%lld ",ans[i]); return 0; }