#include <bits/stdc++.h>
using namespace std;
inline char get() {
  static char buf[30000], *p1 = buf, *p2 = buf;
  return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 30000, stdin), p1 == p2)
             ? EOF
             : *p1++;
}
inline long long read() {
  register char c = getchar();
  register long long f = 1, _ = 0;
  while (c > '9' || c < '0') f = (c == '-') ? -1 : 1, c = getchar();
  while (c <= '9' && c >= '0')
    _ = (_ << 3) + (_ << 1) + (c ^ 48), c = getchar();
  return _ * f;
}
long long n, m, k, a[300005], g[300005], f[300005];
signed main() {
  n = read(), m = read(), k = read();
  for (register long long i = 1; i <= n; i++) a[i] = read();
  sort(a + 1, a + n + 1);
  for (register long long i = 1; i <= n; i++) a[i] += a[i - 1];
  for (register long long i = 1; i <= m; i++) {
    long long x = read(), y = read();
    g[x] = max(g[x], y);
  }
  for (register long long i = 1; i <= k; i++) {
    f[i] = 0x3f3f3f3f;
    for (register long long j = 0; j < i; j++)
      f[i] = min(f[i], f[j] + a[i] - a[j + g[i - j]]);
  }
  cout << f[k];
}
