#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize(2)
const long long M = 100005;
long long n, m, p, d[M], f[105][M], sum[M], a[M], h[M], t[M], q[M];
long long y(long long i, long long k) { return f[i - 1][k] + sum[k]; }
int main() {
  std::ios::sync_with_stdio(false);
  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; i <= m; i++) {
    scanf("%lld%lld", &h[i], &t[i]);
    a[i] = t[i] - d[h[i]];
  }
  sort(a + 1, a + 1 + m);
  for (long long i = 1; i <= m; i++) sum[i] = sum[i - 1] + a[i];
  for (long long i = 1; i <= m; i++) f[0][i] = 1e13;
  f[0][0] = 0;
  for (long long i = 1; i <= p; i++) {
    long long l = 1, r = 1;
    q[++r] = 0;
    for (long long j = 1; j <= m; j++) {
      while (l < r - 1 &&
             (f[i - 1][q[l + 1]] + a[j] * (j - q[l + 1]) - sum[j] +
              sum[q[l + 1]]) > (f[i - 1][q[l + 2]] + a[j] * (j - q[l + 2]) -
                                sum[j] + sum[q[l + 2]]))
        l++;
      f[i][j] = y(i, q[l + 1]) - a[j] * q[l + 1] + a[j] * j - sum[j];
      while (l < r - 1 && (y(i, q[r]) - y(i, q[r - 1])) * (j - q[r]) >=
                              (y(i, j) - y(i, q[r])) * (q[r] - q[r - 1]))
        r--;
      q[++r] = j;
    }
  }
  printf("%lld\n", f[p][m]);
  return 0;
}
