#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int LL; typedef pair P; typedef pair LP; const int INF=1<<30; const LL MAX=1e9+7; void array_show(int *array,int array_n,char middle=' '){ for(int i=0;i &vec_s,int vec_n=-1,char middle=' '){ if(vec_n==-1)vec_n=vec_s.size(); for(int i=0;i &vec_s,int vec_n=-1,char middle=' '){ if(vec_n==-1)vec_n=vec_s.size(); for(int i=0;i>x>>y>>z>>w; if(w/y<=1e6)swap(x,y); if(w/z<=1e6)swap(x,z); a=y/gcd(y,z),b=z/gcd(y,z),c=gcd(y,z); if(b==1){ p=1,q=1-a; }else{ for(i=0;i<=1e6;i++){ if(i*a%b==1){ p=i,q=-i*a/b; break; } } } for(i=0;i<=1e6 && i*x<=w;i++){ f=w-i*x; if(f%c)continue; f/=c; g=f*p,h=f*q; if(h){ j=(-h-1)/a+1; h+=a*j,g-=b*j; } if(g>=0)s+=g/b+1; s%=MAX; } cout<>n; for(i=0;i