#include #include #include using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 1000000001 long long get(long long n){ return n*(n+1)/2; } long long get(long long n,long long w){ return get(w/n)*n + (w%n)*(w/n+1); } int main(){ int _t; cin>>_t; rep(_,_t){ long long N,A,W,K; scanf("%lld %lld %lld %lld",&N,&A,&W,&K); long long ok = -1,ng = Inf; while(ng-ok>1){ long long mid = (ok+ng)/2; long long cur = A; cur -= (mid+1) * (K-1); cur -= mid; if(cur<0){ ng = mid; } else if(K!=N){ ok = mid; } else{ cur -= get(N,W); if(cur<0)ng = mid; else ok = mid; } } if(ok!=-1){ cout<1){ long long mid = (ok+ng)/2; long long cur = W; cur -= mid; if(cur<=0)ok = mid; else ng = mid; } cout<