#include <bits/stdc++.h>
using namespace std;
const long long N = 100005;
long long n, m, p, d[N], t[N], s[N], f[N], g[N], q[N], l, r;
double slope(int j, int k) {
  return (0.0 + g[j] + s[j] - g[k] - s[k]) / (j - k);
}
int main() {
  scanf("%lld%lld%lld", &n, &m, &p);
  for (long long i = 2; i <= n; i++) scanf("%lld", &d[i]), d[i] += d[i - 1];
  for (long long i = 1, x, y; i <= m; i++)
    scanf("%lld%lld", &x, &y), t[i] = y - d[x];
  sort(t + 1, t + m + 1);
  for (long long i = 1; i <= m; i++)
    s[i] = s[i - 1] + t[i], f[i] = i * t[i] - s[i];
  memcpy(g, f, sizeof(f));
  for (long long k = 2; k <= p; k++) {
    l = 0, r = 1;
    for (long long i = 1; i <= m; i++) {
      while (l < r - 1 && slope(q[l + 1], q[l]) <= t[i]) l++;
      f[i] = g[q[l]] + t[i] * (i - q[l]) - s[i] + s[q[l]];
      while (l < r - 1 && slope(q[r - 1], q[r - 2]) >= slope(i, q[r - 1])) r--;
      q[r++] = i;
    }
    memcpy(g, f, sizeof(f));
  }
  printf("%lld\n", f[m]);
  return 0;
}
