#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 5, MAXM = 2005;
const long long inf = 1e11 + 5;
int n, m, k;
long long a[MAXN];
int freeMax[MAXM];
long long memo[MAXM];
long long prefix[MAXN];
long long getSum(int l, int r) {
  if (l == 0) return prefix[r];
  return prefix[r] - prefix[l - 1];
}
long long calcState(int bought) {
  if (bought == k) return 0;
  if (memo[bought] != -1) return memo[bought];
  long long answer = inf;
  for (int i = 1; i <= k - bought; i++) {
    answer = min(answer, getSum(bought + freeMax[i], bought + i - 1) +
                             calcState(bought + i));
  }
  memo[bought] = answer;
  return answer;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n >> m >> k;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  sort(a, a + n);
  for (int i = 0; i < m; i++) {
    int x, y;
    cin >> x >> y;
    if (x > k) continue;
    freeMax[x] = max(freeMax[x], y);
  }
  prefix[0] = a[0];
  for (int i = 1; i < n; i++) {
    prefix[i] = prefix[i - 1] + a[i];
  }
  memset(memo, -1, sizeof(memo));
  cout << calcState(0) << '\n';
}
