#include <bits/stdc++.h>
using namespace std;
int n, m, k, x, y, a[200001], sm[200001], dp[2001];
vector<int> v[2001];
vector<pair<int, int> > que{{1, 0}};
bool cmp(pair<int, int> p1, pair<int, int> p2) {
  if (p1.first - p1.second != p2.first - p2.second)
    return p1.first - p1.second > p2.first - p2.second;
  return p1 < p2;
}
int solve(int i) {
  if (i == k + 1) return 0;
  if (i > k + 1) return 1e9;
  if (dp[i] != -1) return dp[i];
  int temp = 2e9;
  for (int j = 0; j < que.size(); ++j)
    temp = min(temp, sm[i + que[j].first - 1] - sm[i + que[j].second - 1] +
                         solve(i + que[j].first));
  return dp[i] = temp;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> m >> k;
  for (int i = 1; i <= n; ++i) cin >> a[i];
  sort(a + 1, a + n + 1);
  for (int i = 1; i <= n; ++i) sm[i] = sm[i - 1] + a[i];
  for (int i = 1; i <= m; ++i) {
    cin >> x >> y;
    if (x > k) continue;
    v[x].push_back(y);
  }
  for (int i = 1; i <= k; ++i) {
    sort(v[i].begin(), v[i].end(), greater<int>());
    for (int j = 0; j < min((int)v[i].size(), k / i); ++j)
      que.push_back({i, v[i][j]});
  }
  memset(dp, -1, sizeof(dp));
  cout << solve(1);
}
