#include<stdio.h>
#define maxn 1001
int flag=0;
long long f[2][maxn*maxn];
void DP(int n)
{
f[flag][0]=1;
for(int i=1;i<n;i++)
{
flag=1-flag;
for(int j=0;j<=i*(i+1)/2;j++)
{
if(i>j) f[flag][j]=f[1-flag][j];
else if(i<=j) f[flag][j]=f[1-flag][j-i]+f[1-flag][j];
f[flag][j]%=100000007;
}
}
}
int main(void)
{
int n,s,a,b;
long long temp,cnt=0;
scanf("%d%d%d%d",&n,&s,&a,&b);
DP(n);
for(long long i=0;i<=n*(n-1)/2;i++)
{
temp=s+b*(n-1)*n/2-b*i-a*i;
if(temp%n==0)
{
cnt+=f[flag][i];
cnt%=100000007;
}
}
printf("%lld",cnt);
return 0;
}