#include<bits/stdc++.h>
using namespace std;
double L[1000005];
int p=0,g,v[25],n,i,j,k,a[25];
double d,s,t;
int fMin,fMax;
double ans=0;
int F(int x)
{
  return x*x;
}
void DFS2(int x,int A)
{
	if(x==A)
	{
		ans+=s;
		ans+=A*t*2;
		L[++p]=ans;//cout<<ans<<endl;
		ans-=s;
		ans-=A*t*2;
		return;
	}
	int i,j,k;
	if(abs(a[x+1]-a[x])==1) 
	{
		 ans+=2*d;
		 DFS2(x+1,A);
		 ans-=2*d;
	}//cout<<a[x+1]<<endl;
	ans+=sqrt((a[x+1]-a[x])*d*d*(a[x+1]-a[x])+s*s)*2;
	DFS2(x+1,A); 
	ans-=sqrt((a[x+1]-a[x])*d*d*(a[x+1]-a[x])+s*s)*2;
}
void Cal(int x)
{
  a[x]=n;v[n]=1;
  DFS2(1,x);
}
void DFS(int x)
{
  int i,j,k;
  Cal(x);
  if(x>n-1) return;
  for(i=2;i<n;i++)
   if(!v[i])
   {
    a[x]=i;v[i]=1;
    DFS(x+1);
    v[i]=0;
   }
}
int main()
{
 cin>>n>>d>>s>>t>>fMin>>fMax;
 a[1]=1;v[1]=1;
 DFS(2);
 sort(L+1,L+p+1);//cout<<p<<endl;
 while(cin>>g)
 {
  double rr=g-2*fMin,ll=g-2*fMax;
  int l,r,mid,Ansl,Ansr;
  l=1;r=p;
  while(l<=r)
  {
  	mid=(l+r)/2;
  	if(L[mid]>=ll) r=mid-1;
  	 else l=mid+1;
  }
  Ansl=l;
  l=1;r=p;
  while(l<=r)
  {
  	mid=(l+r)/2;
  	if(L[mid]<=rr) l=mid+1;
  	 else r=mid-1;
  }
  Ansr=r;//cout<<Ansl<<" "<<Ansr<<endl; 
  printf("%d\n",Ansr-Ansl+1);
 }
  return 0;
}
