#include <bits/stdc++.h>
using namespace std;
long long cumul[200000 + 2];
int X[200000 + 2];
int Y[200000 + 2];
int A[200000 + 2];
long long Solve(int pos, int n, int m) {
  if (pos > n) return 0;
  long long ans = A[pos] + Solve(pos + 1, n, m);
  printf("pos=%d\n", pos);
  for (int i = 1; i <= m; i++) {
    if (X[i] > n - pos + 1) continue;
    printf("%d to %d with cost %lld\n", pos, pos + X[i] - 1,
           cumul[pos] - cumul[pos + Y[i]]);
    ans = min(ans,
              cumul[pos + Y[i]] - cumul[pos + X[i]] + Solve(pos + X[i], n, m));
  }
  return ans;
}
long long dp[200000 + 2];
long long Solve(int n, int m) {
  for (int pos = n + 1; pos >= 1; pos--) {
    if (pos > n) {
      dp[pos] = 0;
      continue;
    }
    dp[pos] = A[pos] + dp[pos + 1];
    for (int i = 1; i <= m; i++) {
      if (X[i] > n - pos + 1) continue;
      dp[pos] =
          min(dp[pos], cumul[pos + Y[i]] - cumul[pos + X[i]] + dp[pos + X[i]]);
    }
  }
  return dp[1];
}
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  for (int i = 1; i <= n; i++) cin >> A[i];
  sort(A + 1, A + n + 1);
  n = k;
  for (int i = 1; i <= m; i++) {
    cin >> X[i] >> Y[i];
  }
  cumul[n + 1] = 0;
  for (int i = n; i >= 1; i--) {
    cumul[i] = cumul[i + 1] + A[i];
  }
  cout << Solve(n, m) << endl;
}
