https://codeforces.com/contest/2037/problem/D
#include<bits/stdc++.h>
using namespace std;
#define int long long
int T;
int n,m,L;
const int N=2e5+10;
vector<int>w[N];
int x;
int l[N],r[N];
int k,ed[N],num[N];
priority_queue<int>a;
void solve(){
cin>>n>>m>>L;
for(int i=1;i<=2e5;i++){
w[i].clear();
ed[i]=num[i]=0;
}
while(!a.empty())a.pop();
int ans=0;
for(int i=1;i<=n;i++){
cin>>l[i]>>r[i];
}
for(int i=1;i<=n;i++){
int j=i;
while(j<n&&r[j]+1==l[j+1]){
j++;
}
ed[l[i]]=r[j];
i=j;
}
for(int i=1;i<=m;i++){
int t;
cin>>x>>t;
w[x].push_back(t);
}
k=1;
for(int i=1;i<=L;i++){
if(w[i].size()){
for(int j=0;j<w[i].size();j++){
a.push(w[i][j]);
}
continue;
}
if(!ed[i]){
continue;
}
int len=ed[i]-i+1;
while(!a.empty()&&k<=len){
int p=a.top();
a.pop();
k+=p;
ans++;
}
if(k<=len){
cout<<"-1\n";
return;
}
if(ed[i]==L)break;
i=ed[i];
}
cout<<ans<<"\n";
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>T;
while(T--)solve();
return 0;
}