#include<cstdio>
#include<stdlib.h>
#include<algorithm>
#include<queue>
using namespace std;
int n,l,p,t;
struct zhan{
int a;
int b;
}z[10005];
bool cmp(struct zhan x,struct zhan y){
return x.a<y.a;
}
int main()
{
scanf("%d",&t);
while(t--){
priority_queue<int> que;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d %d",&z[i].a,&z[i].b);
}
scanf("%d %d",&l,&p);
for(int i=0;i<n;i++){
z[i].a=l-z[i].a;
}
sort(z+0,z+n,cmp);
z[n].a=l;
z[n].b=0;
int ans=0,pos=0,tank=p,d,flag=0;
for(int i=0;i<=n;i++){
d=z[i].a-pos;
while((tank-d)<0){
if(que.empty()){
flag=1;
}
tank+=que.top();
que.pop();
ans++;
}
tank-=d;
pos=z[i].a;
que.push(z[i].b);
}
if(flag==0)
printf("%d\n",ans);
else
printf("-1");
}
return 0;
}