rt,WA 70pts
/*
希望数据和样例一样水
*/
#include <bits/stdc++.h>
#define int __int128
using namespace std;
inline int read(){
int x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar()) if(ch=='-') f=-1;
for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<3)+(x<<1)+(ch&15);
return f*x;
}
int t,x,y,xx[100005],yy[100005],ans,sx[100005],sy[100005],k,n;
int solve(){
sx[0]=xx[0],sy[0]=yy[0];
for(int i=1;i<n;i++)
sx[i]=sx[i-1]+xx[i],sy[i]=sy[i-1]+yy[i];
int res=-1;
for(int i=0;i<n;i++){
int fz=x+y-sy[i]-sx[i]-(i+1)*k,fm=n*k+sx[n-1]+sy[n-1],p;
if(fm<=0){
if(fz<=0){
if(x-sx[i]<0||y-sy[i]<0) continue;
if(~res) res=min(res,i+1);
else res=i+1;
}
}
else{
if(fz<=0){
if(x-sx[i]<0||y-sy[i]<0) continue;
if(~res) res=min(res,i+1);
else res=i+1;
}
else{
p=(fz+fm-1)/fm;
if(x-sx[i]-p*sx[n-1]<0||y-sy[i]-p*sy[n-1]<0) continue;
if(~res) res=min(res,p*n+i+1);
else res=p*n+i+1;
}
}
}
return res;
}
void print(int x){
if(x<0) x=-x,putchar('-');
if(x>9) print(x/10);
putchar(x%10|48);
}
signed main(){
t=read();
while(t--){
n=read(),k=read(),x=read(),y=read(),ans=-1;
for(int i=0;i<n;i++) xx[i]=read(),yy[i]=read();
// for(int i=0;i<n;i++) yy[i]=read();
if((!x)&&(!y)){
puts("0");
continue;
}
int g=solve();
if(~g)
if(~ans) ans=min(ans,g);
else ans=g;
// printf("%lld\n",ans);
y=-y;
for(int i=0;i<n;i++) yy[i]=-yy[i];
g=solve();
if(~g)
if(~ans) ans=min(ans,g);
else ans=g;
// printf("%lld\n",ans);
x=-x;
for(int i=0;i<n;i++) xx[i]=-xx[i];
g=solve();
if(~g)
if(~ans) ans=min(ans,g);
else ans=g;
// printf("%lld\n",ans);
y=-y;
for(int i=0;i<n;i++) yy[i]=-yy[i];
g=solve();
if(~g)
if(~ans) ans=min(ans,g);
else ans=g;
print(ans);
putchar(10);
}
return 0;
}