#include <bits/stdc++.h>
using namespace std;
int n, m, p, top, bot, top1;
pair<long long, long long> s[100005], s1[100005];
long long sum[100005], dp[100005];
vector<int> a;
bool check(pair<long long, long long> x, pair<long long, long long> y,
           int val) {
  return 1ll * x.first * val + x.second >= 1ll * y.first * val + y.second;
}
bool Delete(pair<long long, long long> x, pair<long long, long long> y,
            pair<long long, long long> z) {
  long long yasuo = 1ll * (y.second - x.second) * (x.first - z.first),
            riven = 1ll * (z.second - x.second) * (x.first - y.first);
  return yasuo >= riven;
}
void Pro() {
  n = a.size() - 1;
  sum[0] = 0;
  for (int i = (1); i <= (n); ++i) sum[i] = sum[i - 1] + a[i];
  s1[top1 = 1] = make_pair(0, 0);
  for (int j = (1); j <= (p); ++j) {
    for (int i = (1); i <= (n); ++i) s[i] = s1[i];
    top = top1;
    bot = 1;
    top1 = 0;
    for (int i = (1); i <= (n); ++i) {
      while (bot < top && -s[bot + 1].first < i &&
             check(s[bot], s[bot + 1], a[i]))
        ++bot;
      dp[i] =
          1ll * s[bot].first * a[i] + s[bot].second + 1ll * i * a[i] - sum[i];
      s1[++top1] = make_pair(-i, dp[i] + sum[i]);
      while (top1 >= 3 && Delete(s1[top1 - 2], s1[top1 - 1], s1[top1])) {
        --top1;
        s1[top1] = s1[top1 + 1];
      }
    }
  }
  cout << dp[n];
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> p;
  for (int i = (2); i <= (n); ++i) {
    int x;
    cin >> x;
    sum[i] = sum[i - 1] + x;
  }
  for (int i = (1); i <= (m); ++i) {
    int x, y;
    cin >> x >> y;
    y -= sum[x];
    a.push_back(y);
  }
  a.push_back(-2 * 1000000007);
  sort(a.begin(), a.end());
  if (a.size() <= p) {
    cout << 0;
    return 0;
  }
  Pro();
}
