#include using namespace std; #define ll long long const ll maxn=200005; const __int128 BASE=1000000000000000000; struct BigInt{ vector v; BigInt(){v.clear();} BigInt(ll n){v.push_back(n); norm();} BigInt(__int128 n){while(n>0){v.push_back((ll)(n%BASE)); n/=BASE;} if(v.empty()) v.push_back(0);} void norm(){while(v.size()>1 and v.back()==0) v.pop_back();} bool operator<(const BigInt& o)const{if(v.size()!=o.v.size()) return v.size()=0;i--) if(v[i]!=o.v[i]) return v[i]=(const BigInt& o)const{return not(*this=0;i--){__int128 val=c*BASE+v[i]; r.v[i]=(ll)(val/n); c=val%n;} r.norm(); return r;} void print(){if(v.empty()){printf("0\n"); return;} printf("%lld",v.back()); for(int i=(int)v.size()-2;i>=0;i--) printf("%018lld",v[i]); printf("\n");} }; __int128 D,A,B,K,C; bool check(BigInt y){ BigInt n1=y*B+BigInt(B-1), q1=n1/D; BigInt n2=y*C, q2=n2/B; if(q1=BigInt(K+1); } int main(){ int t; scanf("%d",&t); while(t--){ ll d_in,a_in,b_in,k_in; scanf("%lld%lld%lld%lld",&d_in,&a_in,&b_in,&k_in); D=d_in; A=a_in; B=b_in; K=k_in; C=(A*B)/D; __int128 lhs=B*B, rhs=D*C; BigInt ans((ll)-1); if(lhs