#include<bits/stdc++.h>#define IOS ios::sync_with_stdio(false), cin.tie(0)#define debug(a) cout << #a ": " << a << endlusingnamespace std;typedeflonglong ll;constint N =5010;int n, m, k;
vector<int> g[N];int a[N], b[N], c[N];int army[N], rest[N], fa[N];booljudge(void){int now = k;for(int i =1; i <= n;++i){if(now < a[i])returnfalse;
army[i]= now + b[i];
now += b[i];}
rest[n]= army[n];for(int i = n-1; i >=1;--i){
rest[i]= army[i]-a[i+1];
rest[i]=min(rest[i+1], rest[i]);}returntrue;}intmain(void){
IOS;
cin >> n >> m >> k;for(int i =1; i <= n;++i){
cin >> a[i]>> b[i]>> c[i];}for(int i =1; i <= n;++i) fa[i]= i;for(int i =0; i < m;++i){int u, v; cin >> u >> v;
fa[v]=max(fa[v], u);}for(int i =1; i <= n;++i){
g[fa[i]].push_back(i);}if(!judge()){
cout <<-1<< endl;return0;}
priority_queue<int, vector<int>, greater<int>> q;for(int i =1; i <= n;++i){for(int j =0; j < g[i].size();++j){
q.push(c[g[i][j]]);}while(q.size()> rest[i]) q.pop();}
ll ans =0;while(!q.empty()){
ans += q.top(); q.pop();}
cout << ans << endl;return0;}