#include <bits/stdc++.h>
using namespace std;
long long a, b, c, d[100001], sumd[100001], l[100001], q, w, dp[100001][101],
    ll, rr, qu[100001], sum[100001];
long long cal(long long qq, long long ww, long long ee) {
  return dp[ww][ee] - dp[qq][ee] + sum[ww] - sum[qq];
}
bool ch1(long long qq1, long long ww1, long long qq2, long long ww2,
         long long ee) {
  return (cal(qq1, ww1, ee)) * (ww2 - qq2) >= (cal(qq2, ww2, ee)) * (ww1 - qq1);
}
bool ch2(long long qq, long long ww, long long ee, long long ee1) {
  return (cal(qq, ww, ee1)) <= ee * (ww - qq);
}
int main() {
  scanf("%lld%lld%lld", &a, &b, &c);
  for (int i = 1; i < a; i++) {
    scanf("%lld", &d[i]);
    sumd[i + 1] = sumd[i] + d[i];
  }
  for (int i = 1; i <= b; i++) {
    scanf("%lld%lld", &q, &w);
    l[i] = w - sumd[q];
  }
  sort(l + 1, l + b + 1);
  for (int i = 1; i <= b; i++) {
    sum[i] = sum[i - 1] + l[i];
  }
  memset(dp, 0x3f3f3f3f3f3f3f, sizeof(dp));
  dp[0][0] = 0;
  for (int j = 1; j <= c; j++) {
    ll = rr = 1;
    qu[1] = 0;
    for (int i = 1; i <= b; i++) {
      while (ll < rr && ch2(qu[ll], qu[ll + 1], l[i], j - 1)) {
        ll++;
      }
      dp[i][j] =
          dp[qu[ll]][j - 1] + l[i] * (i - qu[ll]) - (sum[i] - sum[qu[ll]]);
      while (ll < rr && ch1(qu[rr - 1], qu[rr], qu[rr], i, j - 1)) {
        rr--;
      }
      qu[++rr] = i;
    }
  }
  printf("%lld", dp[b][c]);
  return 0;
}
