#include <bits/stdc++.h>
using namespace std;
int n, m, p;
int h[100000];
long long ts[100000];
long long sum[100000 + 1];
long long dp[2][100000 + 1];
int deq[100000];
const long long oo = 1LL << 60;
inline long long f(int cur, int j, long long x) {
  return -j * x + dp[cur][j] + sum[j];
}
bool check(int cur, int f1, int f2, int f3) {
  long long a1 = -f1, b1 = dp[cur][f1] + sum[f1];
  long long a2 = -f2, b2 = dp[cur][f2] + sum[f2];
  long long a3 = -f3, b3 = dp[cur][f3] + sum[f3];
  return (a2 - a1) * (b3 - b2) >= (b2 - b1) * (a3 - a2);
}
int main() {
  cin >> n >> m >> p;
  h[0] = 0;
  for (int i = 0; i < (int)(n - 1); i++) {
    cin >> h[i + 1];
    h[i + 1] += h[i];
  }
  for (int i = 0; i < (int)(m); i++) {
    int x, y;
    cin >> x >> y;
    ts[i] = y - h[x - 1];
  }
  sort(ts, ts + m);
  sum[0] = 0;
  for (int i = 0; i < (int)(m); i++) sum[i + 1] = sum[i] + ts[i];
  for (int i = 0; i < (int)(2); i++)
    for (int j = 0; j < (int)(m + 1); j++) dp[i][j] = oo;
  dp[0][0] = 0;
  for (int i = 0; i < (int)(p); i++) {
    int cur = i & 1;
    int nxt = (i + 1) & 1;
    int s = 0, t = 0;
    dp[nxt][0] = 0;
    for (int j = (int)(1); j < (int)(m + 1); j++) {
      while (t - s > 1 && check(cur, deq[t - 2], deq[t - 1], j - 1)) --t;
      deq[t++] = j - 1;
      while (t - s > 1 &&
             f(cur, deq[s], ts[j - 1]) >= f(cur, deq[s + 1], ts[j - 1]))
        ++s;
      dp[nxt][j] = j * ts[j - 1] - sum[j] + f(cur, deq[s], ts[j - 1]);
    }
  }
  cout << dp[p & 1][m] << endl;
}
