#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;
}