#include <bits/stdc++.h>
using namespace std;
struct ios {
  inline char gc() {
    static const int IN_LEN = 1 << 18 | 1;
    static char buf[IN_LEN], *s, *t;
    return (s == t) && (t = (s = buf) + fread(buf, 1, IN_LEN, stdin)),
           s == t ? -1 : *s++;
  }
  template <typename _Tp>
  inline ios& operator>>(_Tp& x) {
    static char ch, sgn;
    ch = gc(), sgn = 0;
    for (; !isdigit(ch); ch = gc()) {
      if (ch == -1) return *this;
      sgn |= ch == '-';
    }
    for (x = 0; isdigit(ch); ch = gc()) x = x * 10 + (ch ^ '0');
    sgn && (x = -x);
    return *this;
  }
} io;
const int N = 2e5 + 7;
int n, m, K, a[N], ans = 0, c[N], dp[N];
inline int max(int x, int y) { return x > y ? x : y; }
int main() {
  io >> n >> m >> K;
  for (register int i = 1; i <= n; i++) io >> a[i];
  sort(a + 1, a + 1 + n);
  for (register int i = 1; i <= K; i++) a[i] += a[i - 1];
  for (register int i = 1, x, y; i <= m; i++) {
    io >> x >> y;
    c[x] = max(c[x], y);
  }
  for (int i = 1; i <= K; i++) {
    dp[i] = 1 << 30;
    for (int j = 0; j < i; j++)
      dp[i] = min(dp[i], dp[j] + a[i] - a[j + c[i - j]]);
  }
  printf("%d", dp[K]);
}
