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