#include <bits/stdc++.h>
using namespace std;
long long f[110][100010];
long long a[100010];
long long s[100010];
long long q[100010];
int main() {
  int n, m, p;
  scanf("%d%d%d", &n, &m, &p);
  int dis[100010];
  int sd[100010];
  sd[1] = 0;
  for (int i = 2; i <= n; i++) {
    scanf("%d", &dis[i]);
    sd[i] = sd[i - 1] + dis[i];
  }
  for (int i = 1; i <= m; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    y -= sd[x];
    a[i] = y;
  }
  sort(a + 1, a + m + 1);
  s[0] = 0;
  for (int i = 1; i <= m; i++) s[i] = s[i - 1] + a[i];
  memset(f, 0, sizeof(f));
  f[1][0] = 0;
  for (int i = 1; i <= m; i++) f[1][i] = i * a[i] - s[i];
  for (int i = 2; i <= p; i++) {
    q[1] = 0;
    int head = 1, tail = 1;
    for (int j = 1; j <= m; j++) {
      while ((head < tail) && ((f[i - 1][q[head + 1]] + s[q[head + 1]]) -
                                   (f[i - 1][q[head]] + s[q[head]]) <
                               (q[head + 1] - q[head]) * a[j]))
        head++;
      f[i][j] = f[i - 1][q[head]] + (j - q[head]) * a[j] - (s[j] - s[q[head]]);
      q[++tail] = j;
      while (head < tail - 1 && ((f[i - 1][q[tail]] + s[q[tail]]) -
                                 (f[i - 1][q[tail - 1]] + s[q[tail - 1]])) *
                                        (q[tail - 1] - q[tail - 2]) <
                                    ((f[i - 1][q[tail - 1]] + s[q[tail - 1]]) -
                                     (f[i - 1][q[tail - 2]] + s[q[tail - 2]])) *
                                        (q[tail] - q[tail - 1])) {
        tail--;
        q[tail] = q[tail + 1];
      }
    }
  }
  printf("%I64d\n", f[p][m]);
  return 0;
}
