#include <bits/stdc++.h>
using namespace std;
long long sz[(1 << 8)];
long long D[(1 << 8)][(1 << 8)];
long long MD[32][(1 << 8)][(1 << 8)];
long long c[10];
long long mw[(1 << 8)];
long long who[(1 << 8)];
long long who_n = 0;
long long now[(1 << 8)];
long long want[25 * 30 + 10];
long long made[(1 << 8)];
long long p[55], w[55];
int main() {
  long long x, k, n, q;
  long long i, j, r, o;
  scanf("%lld%lld%lld%lld", &x, &k, &n, &q);
  for (i = 1; i <= k; i++) scanf("%lld", &c[i]);
  for (i = 1; i < (1 << k); i++) sz[i] = sz[i & (i - 1)] + 1;
  for (i = 0; i < (1 << k); i++) {
    for (j = 0; j < (1 << k); j++) {
      D[i][j] = -1;
    }
  }
  for (i = 0; i < (1 << k); i++) {
    if (sz[i] != x) continue;
    who[who_n] = i;
    mw[i] = who_n;
    who_n++;
    long long fo;
    for (j = 0; j < k; j++) {
      if (i & (1 << j)) {
        fo = j;
        break;
      }
    }
    if (fo != 0) {
      D[i][i / 2] = 0;
    }
    for (j = fo + 1; j <= k; j++) {
      if (i & (1 << j)) continue;
      long long next = i - (1 << fo) + (1 << j);
      next /= 2;
      D[i][next] = c[j - fo];
    }
  }
  for (i = 0; i < who_n; i++) {
    for (j = 0; j < who_n; j++) {
      MD[0][i][j] = D[who[i]][who[j]];
    }
  }
  for (i = 1; i < 32; i++) {
    for (j = 0; j < who_n; j++) {
      for (r = 0; r < who_n; r++) {
        MD[i][j][r] = -1;
      }
    }
    for (j = 0; j < who_n; j++) {
      for (r = 0; r < who_n; r++) {
        for (o = 0; o < who_n; o++) {
          if (MD[i - 1][j][o] == -1) continue;
          if (MD[i - 1][o][r] == -1) continue;
          if (MD[i][j][r] == -1 ||
              MD[i][j][r] > MD[i - 1][j][o] + MD[i - 1][o][r])
            MD[i][j][r] = MD[i - 1][j][o] + MD[i - 1][o][r];
        }
      }
    }
  }
  long long want_n = 0;
  for (i = 0; i < q; i++) {
    scanf("%lld%lld", &p[i], &w[i]);
    for (j = p[i] - k - 1; j <= p[i] + 1; j++) {
      if (j > 1) want[want_n++] = j;
    }
  }
  want[want_n++] = n - x + 1;
  sort(want, want + want_n);
  want_n = unique(want, want + want_n) - want;
  long long noww = 1;
  for (i = 0; i < who_n; i++) now[i] = made[i] = -1e13;
  now[mw[(1 << x) - 1]] = 0;
  for (long long pp = 0; pp < want_n; pp++) {
    long long next = want[pp];
    if (next > n - x + 1) break;
    if (next - noww == 1) {
      for (i = 0; i < who_n; i++) {
        if (now[i] == -1e13) continue;
        long long hb = who[i];
        long long fp;
        for (j = 0; j < k; j++) {
          if (hb & (1 << j)) {
            fp = j;
            break;
          }
        }
        if (fp > 0) {
          if (made[mw[hb / 2]] == -1e13 || made[mw[hb / 2]] > now[i])
            made[mw[hb / 2]] = now[i];
        }
        for (j = fp + 1; j <= k; j++) {
          if (hb & (1 << j)) continue;
          long long nb = hb - (1 << fp) + (1 << j);
          nb /= 2;
          long long pls = c[j - fp];
          for (r = 0; r < q; r++) {
            if (p[r] == noww + j) pls += w[r];
          }
          if (made[mw[nb]] == -1e13 || made[mw[nb]] > now[i] + pls)
            made[mw[nb]] = now[i] + pls;
        }
      }
      for (i = 0; i < who_n; i++) {
        now[i] = made[i];
        made[i] = -1e13;
      }
    } else {
      long long delta = next - noww;
      for (i = 0; i < 30; i++) {
        if ((delta & ((long long)1 << i)) == 0) continue;
        for (j = 0; j < who_n; j++) {
          if (now[j] == -1e13) continue;
          for (r = 0; r < who_n; r++) {
            if (MD[i][j][r] == -1) continue;
            if (made[r] == -1e13 || made[r] > now[j] + MD[i][j][r])
              made[r] = now[j] + MD[i][j][r];
          }
        }
        for (j = 0; j < who_n; j++) {
          now[j] = made[j];
          made[j] = -1e13;
        }
      }
    }
    noww = want[pp];
  }
  printf("%lld", now[0]);
  return 0;
}
