#include <bits/stdc++.h>
using namespace std;
const int P = 1e9 + 7, INF = 0x3f3f3f3f;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long qpow(long long a, long long n) {
  long long r = 1 % P;
  for (a %= P; n; a = a * a % P, n >>= 1)
    if (n & 1) r = r * a % P;
  return r;
}
long long inv(long long first) {
  return first <= 1 ? 1 : inv(P % first) * (P - P / first) % P;
}
inline int rd() {
  int first = 0;
  char p = getchar();
  while (p < '0' || p > '9') p = getchar();
  while (p >= '0' && p <= '9') first = first * 10 + p - '0', p = getchar();
  return first;
}
const int N = 5010;
int n, m, k, g[N][N], h[N];
struct _ {
  int a, b, c, id;
} f[N];
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1; i <= n; ++i) {
    scanf("%d%d%d", &f[i].a, &f[i].b, &f[i].c);
    f[i].id = i;
    g[i][i] = 1;
  }
  for (int i = 1; i <= m; ++i) {
    int u, v;
    scanf("%d%d", &u, &v);
    g[v][u] = 1;
  }
  int now = k;
  for (int i = 1; i <= n; ++i) {
    if (now < f[i].a) return puts("-1"), 0;
    h[i - 1] = now - f[i].a;
    now += f[i].b;
  }
  h[n] = now;
  sort(f + 1, f + 1 + n, [](_ a, _ b) {
    if (a.c != b.c) return a.c > b.c;
    return a.id > b.id;
  });
  int ans = 0;
  for (int i = 1; i <= n; ++i) {
    int first = f[i].id;
    for (int j = n; j >= first; --j)
      if (g[first][j]) {
        int ok = 1;
        for (int t = j; t <= n; ++t)
          if (!h[t]) ok = 0;
        if (ok) {
          ans += f[i].c;
          for (int t = j; t <= n; ++t) --h[t];
        }
        break;
      }
  }
  printf("%d\n", ans);
}
