#include <bits/stdc++.h>
using namespace std;
const int N = (int)1e5 + 10;
int n, m, k, a[N], d[N], q[N];
long long s[N], f[2][N];
void Read(int &x) {
  x = 0;
  char ch = getchar();
  while (ch < '0' || ch > '9') ch = getchar();
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
}
double Slope(int p, int i, int j) {
  return (double)(f[p][j] + s[j] - f[p][i] - s[i]) / (j - i);
}
int main() {
  Read(n), Read(m), Read(k);
  for (int i = 2; i <= n; i++) Read(d[i]), d[i] += d[i - 1];
  for (int i = 1, h, t; i <= m; i++) Read(h), Read(t), a[i] = t - d[h];
  sort(a + 1, a + 1 + m);
  for (int i = 1; i <= m; i++) s[i] = s[i - 1] + a[i];
  for (int i = 1; i <= m; i++) f[1][i] = (long long)a[i] * i - s[i];
  for (int i = 2, l, r, p = 1; i <= k; i++) {
    q[l = r = 1] = 0, p ^= 1;
    for (int j = 1; j <= m; j++) {
      while (l < r && Slope(p ^ 1, q[l], q[l + 1]) < a[j]) l++;
      f[p][j] = f[p ^ 1][q[l]] + (long long)a[j] * (j - q[l]) + s[q[l]] - s[j];
      while (l < r && Slope(p ^ 1, q[r - 1], q[r]) > Slope(p ^ 1, q[r], j)) r--;
      q[++r] = j;
    }
  }
  cout << f[k & 1][m] << endl;
  return 0;
}
