#include <bits/stdc++.h>
using namespace std;
long long int n, m, p, x, y, dis[(100000 + 10)], wait[(100000 + 10)],
    sum[(100000 + 10)], g[(100000 + 10)], dp[150][(100000 + 10)],
    q[(100000 + 10)];
signed main() {
  scanf("%lld%lld%lld", &n, &m, &p);
  for (long long int i = 2; i <= n; ++i)
    scanf("%lld", &x), dis[i] = dis[i - 1] + x;
  for (long long int i = 1; i <= m; ++i)
    scanf("%lld%lld", &x, &y), wait[i] = y - dis[x];
  sort(wait + 1, wait + m + 1);
  memset(dp, 0x3f, sizeof dp);
  for (long long int i = 1; i <= m; ++i) sum[i] = sum[i - 1] + wait[i];
  for (long long int i = 1; i <= p; ++i) {
    for (long long int j = 1; j <= m; ++j) g[j] = dp[i - 1][j] + sum[j];
    long long int l = 1, r = 1;
    for (long long int j = 1; j <= m; ++j) {
      while (l < r && (g[q[l + 1]] - g[q[l]]) <= wait[j] * (q[l + 1] - q[l]))
        ++l;
      dp[i][j] = dp[i - 1][j] < g[q[l]] + wait[j] * (j - q[l]) - sum[j]
                     ? dp[i - 1][j]
                     : g[q[l]] + wait[j] * (j - q[l]) - sum[j];
      while (l < r && (g[j] - g[q[r]]) * (q[r] - q[r - 1]) <=
                          (g[q[r]] - g[q[r - 1]]) * (j - q[r]))
        --r;
      q[++r] = j;
    }
  }
  printf("%lld\n", dp[p][m]);
  return 0;
}
