#include <bits/stdc++.h>
using namespace std;
int n, m, k;
vector<long long> a;
vector<pair<int, int> > d;
vector<long long> f(2002, -1);
long long cost(int i, int j) {
  long long res = a[j];
  if (i) res -= a[i - 1];
  return res;
}
long long dfs(int cur) {
  if (cur == n) return 0;
  if (f[cur] != -1) return f[cur];
  long long res = dfs(cur + 1) + cost(cur, cur);
  for (int i = 0; i < d.size(); i++) {
    if (cur + d[i].first - 1 < n) {
      res = min(res, dfs(cur + d[i].first) +
                         cost(cur + d[i].second, cur + d[i].first - 1));
    }
  }
  return f[cur] = res;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> m >> k;
  a.resize(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  sort(a.begin(), a.end());
  while (a.size() > k) a.pop_back();
  n = k;
  for (int i = 0; i < n; i++) {
    if (i) a[i] += a[i - 1];
  }
  vector<int> tmp(k + 1, -1);
  for (int i = 0; i < m; i++) {
    int x, y;
    cin >> x >> y;
    if (x > k) continue;
    tmp[x] = max(tmp[x], y);
  }
  for (int i = 1; i <= k; i++) {
    if (tmp[i] != -1) {
      d.push_back({i, tmp[i]});
    }
  }
  cout << dfs(0) << endl;
  return 0;
}
