#include <bits/stdc++.h>
#pragma GCC optimize(3)
using std::cout;
using std::endl;
using std::sort;
char File[300005], *p1 = File, *p2 = File;
inline char Getchar() {
  return p1 == p2 &&
                 (p2 = (p1 = File) + fread(File, 1, 300000, stdin), p1 == p2)
             ? EOF
             : *p1++;
}
inline int Getint() {
  register int x = 0;
  register char c;
  while (!isdigit(c = getchar()))
    ;
  for (; isdigit(c); c = getchar()) x = x * 10 + c - 48;
  return x;
}
int n, m, p;
int q[100005], l, r;
long long f[2][100005], sa[100005], fc[100005], sd[100005], a[100005];
int main() {
  n = Getint(), m = Getint(), p = Getint();
  for (register int i = 2; i <= n; ++i) sd[i] = sd[i - 1] + Getint();
  for (register int i = 1; i <= m; ++i) {
    int h = Getint(), t = Getint();
    a[i] = t - sd[h];
  }
  sort(a + 1, a + m + 1);
  for (register int i = 1; i <= m; ++i) sa[i] = sa[i - 1] + a[i];
  memset(f, 0x3f, sizeof f);
  for (register int i = 1; i <= p; ++i) {
    q[l = r = 1] = 0;
    for (register int j = 1; j <= m; ++j) fc[j] = f[i & 1 ^ 1][j] + sa[j];
    for (register int j = 1; j <= m; ++j) {
      while (l < r && fc[q[l + 1]] - fc[q[l]] <= a[j] * (q[l + 1] - q[l])) ++l;
      f[i & 1][j] = fc[q[l]] + a[j] * (j - q[l]) - sa[j];
      while (l < r && (fc[q[r]] - fc[q[r - 1]]) * (j - q[r]) >=
                          (fc[j] - fc[q[r]]) * (q[r] - q[r - 1]))
        --r;
      q[++r] = j;
    }
  }
  cout << f[p & 1][m] << endl;
  return 0;
}
