#include <bits/stdc++.h>
using namespace std;
bool concave(pair<int, long long> a, pair<int, long long> b,
             pair<int, long long> c) {
  return (b.first - a.first) * (c.second - b.second) <=
         (c.first - b.first) * (b.second - a.second);
}
int main() {
  int n, m, p;
  cin >> n >> m >> p;
  int h[n + 1];
  h[1] = 0;
  for (int tmp, i = 2; i <= n; ++i) {
    cin >> tmp;
    h[i] = h[i - 1] + tmp;
  }
  int a[m];
  for (int h1, t, i = 0; i < m; ++i) {
    cin >> h1 >> t;
    a[i] = t - h[h1];
  }
  sort(a, a + m);
  if (m == 1) {
    cout << 0 << '\n';
    return 0;
  }
  long long dp[m];
  vector<pair<int, long long> > v;
  for (int i = 0; i < m; ++i) dp[i] = (long long)(i + 1) * a[i];
  for (int i = 1; i < p; ++i) {
    v.resize(2);
    v[0] = pair<int, long long>(0, dp[0]);
    v[1] = pair<int, long long>(1, dp[1]);
    for (int j = 2; j < m; ++j) {
      while (v.size() >= 2 &&
             concave(v[v.size() - 2], v.back(), pair<int, long long>(j, dp[j])))
        v.pop_back();
      v.push_back(pair<int, long long>(j, dp[j]));
    }
    v.push_back(pair<int, long long>(m, 1ll << 60));
    int k = 0;
    for (int j = 0; j < m; ++j) {
      while ((long long)(v[k + 1].first - v[k].first) * a[j] >
             v[k + 1].second - v[k].second)
        ++k;
      dp[j] = v[k].second + (long long)(j - v[k].first) * a[j];
    }
  }
  long long ans = dp[m - 1];
  for (int i = 0; i < m; ++i) ans -= a[i];
  cout << ans;
  return 0;
}
