#include<bits/stdc++.h>
using namespace std;
struct node{
int zongk,zongsum;
}zong[114514];
struct node1{
int l,r,w;
}f[1145];
int n,m,k,zongi,dp[1145],L[1145],R[1145];
bool bookblue[1145];
int cmp(node1 x,node1 y){
return x.w<y.w;
}
int main(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
scanf("%d%d%d",&f[i].l,&f[i].r,&f[i].w);
}
sort(f+1,f+n+1,cmp);
for(int i=1;i<=m;i++){
scanf("%d%d",&L[i],&R[i]);
}
for(int i=1;i<=n;i++){
int jiao=0,jiaosum[1145]={0};
for(int j=1;j<=m;j++){
if(max(f[i].l,L[j])<=min(f[i].r,R[j])&&bookblue[j]==0){
jiao++;
jiaosum[jiao]=min(f[i].r,R[j])-max(f[i].l,L[j])+1;
bookblue[j]=1;
}
}
if(jiao!=0){
sort(jiaosum+1,jiaosum+jiao+1);
zong[++zongi].zongsum=jiaosum[jiao];
zong[zongi].zongk=f[i].w;
}
}
for(int i=1;i<=zongi;i++){
for(int j=k;j>=zong[i].zongk;j--){
dp[j]=max(dp[j],dp[j-zong[i].zongk]+zong[i].zongsum);
}
}
cout<<dp[k]<<endl;
for(int i=1;i<=zongi;i++){
cout<<zong[i].zongsum<<" "<<zong[i].zongk<<endl;
}
}