#include<iostream>
#define module 100000007
using namespace std;
long long tempCount;
void dfs(long long step,long long a,long long b,long long temp,long long sum,long long s,long long n)
{
if(step>=n)
return;
else if(step==n-1)
{
if(sum==s)
tempCount++;
return;
}
temp+=a;
dfs(step+1,a,b,temp,sum+temp,s,n);
temp-=a;
temp-=b;
dfs(step+1,a,b,temp,sum+temp,s,n);
temp+=b;
}
long long more(long long a1,long long a,long long b,long long x,long long y,long long n,long long s)
{
tempCount=0;
dfs(0,a,b,a1,a1,s,n);
return tempCount;
}
int main()
{
long long n,s,a,b,a1,i,k,lowLimit,highLimit,items,counter=0;
cin>>n>>s>>a>>b;
items=n*(n-1)/2;
lowLimit=(s-items*a)/n;
highLimit=(s+items*b)/n;
for(a1=lowLimit;a1<=highLimit;a1++)
for(i=0;i<=items;i++)
if(n*a1+i*a-(items-i)*b==s)
{
counter+=more(a1,a,b,i,items-i,n,s);
if(counter>module)
counter%=module;
}
cout<<counter<<endl;
return 0;
}