#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
long long qm(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a % mod;
    b >>= 1;
    a = a * a % mod;
  }
  return (ans % mod + mod) % mod;
}
const int maxn = 2e5 + 10;
long long dp[2005];
int a[maxn];
struct nobe {
  int x, y;
  bool operator<(const nobe& xx) const {
    if (x == xx.x) return y > xx.y;
    return x < xx.x;
  }
} b[maxn];
int pos[maxn];
bool visit[maxn];
long long sum[maxn];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, m, k;
  cin >> n >> m >> k;
  for (int i = 1; i <= n; ++i) cin >> a[i];
  for (int i = 1; i <= m; ++i) cin >> b[i].x >> b[i].y;
  sort(a + 1, a + 1 + n);
  sort(b + 1, b + 1 + m);
  int cnt = 0;
  for (int i = 1; i <= m; ++i) {
    if (b[i].x <= k && visit[b[i].x] == 0) {
      ++cnt;
      pos[cnt] = i;
      visit[b[i].x] = 1;
    }
    if (b[i].x > k) break;
  }
  sum[0] = 0;
  dp[0] = 0;
  for (int i = 1; i <= k; ++i) {
    sum[i] = sum[i - 1] + a[i];
    dp[i] = sum[i];
  }
  for (int j = 1; j <= k; ++j) {
    for (int i = 1; i <= cnt; ++i) {
      int cnt = b[pos[i]].x - b[pos[i]].y;
      if (j >= b[pos[i]].x)
        dp[j] = min(dp[j], dp[j - b[pos[i]].x] + sum[j] - sum[j - cnt]);
    }
  }
  cout << dp[k] << endl;
}
