#include <bits/stdc++.h>
using namespace std;
bool ccw(pair<long long, long long> p0, pair<long long, long long> p1,
         pair<long long, long long> p2) {
  double lv = 0.0;
  lv += double(p0.first) * double(p1.second);
  lv += double(p1.first) * double(p2.second);
  lv += double(p2.first) * double(p0.second);
  double rv = 0.0;
  rv += double(p1.first) * double(p0.second);
  rv += double(p2.first) * double(p1.second);
  rv += double(p0.first) * double(p2.second);
  return lv >= rv;
}
const int max_n = 100000;
const int max_m = 100000;
const int max_p = 100;
int n, m, p;
long long d[max_n - 1], sd[max_n];
long long h[max_m], t[max_m];
long long v[max_m], y[max_m];
long long dp[max_m + 1][max_p + 1];
pair<long long, long long> hull[max_p][max_n];
int sz[max_p], pt[max_p];
int main() {
  scanf("%d %d %d", &n, &m, &p);
  for (int i = 0; i < n - 1; i++) scanf("%lld", &d[i]);
  sd[0] = 0LL;
  for (int i = 1; i < n; i++) sd[i] = sd[i - 1] + d[i - 1];
  for (int i = 0; i < m; i++) scanf("%lld %lld", &h[i], &t[i]), h[i]--;
  for (int i = 0; i < m; i++) v[i] = t[i] - sd[h[i]];
  sort(v, v + m);
  for (int i = 0; i < m; i++) y[i] = v[m - 1] - v[m - 1 - i];
  for (int c = 0; c < p; c++) {
    dp[0][c] = 0LL;
    hull[c][0] = pair<long long, long long>(0LL, y[0]);
    sz[c] = 1;
    pt[c] = 0;
  }
  for (int t = 1; t <= m; t++) {
    dp[t][0] = 0LL;
    for (int c = p; c >= 0; c--) {
      if (c > 0) {
        pair<long long, long long> *chull = hull[c - 1];
        int &cpt = pt[c - 1];
        int &csz = sz[c - 1];
        while (cpt < csz - 1 &&
               t * chull[cpt].first + chull[cpt].second <
                   t * chull[cpt + 1].first + chull[cpt + 1].second)
          cpt++;
        dp[t][c] = t * chull[cpt].first + chull[cpt].second;
      }
      if (t < m && c < p) {
        pair<long long, long long> *chull = hull[c];
        int &cpt = pt[c];
        int &csz = sz[c];
        pair<long long, long long> npt(y[t], dp[t][c] - t * y[t]);
        while (csz >= 2 && ccw(chull[csz - 2], chull[csz - 1], npt)) csz--;
        if (cpt > csz) cpt = csz;
        chull[csz++] = npt;
      }
    }
  }
  long long ans = 0LL;
  for (int i = 0; i < m; i++) ans += y[i];
  ans -= dp[m][p - 1];
  printf("%lld\n", ans);
  return 0;
}
