#include <bits/stdc++.h>
using namespace std;
const int MAXN = 258, N = 256;
long long x, n, k, q2, q;
long long c[10];
long long m1[30][MAXN][MAXN];
void init() {
  memset(m1, 0x3f, sizeof(m1));
  for (int i = 0, i2; i < N; i++) {
    if (i & 1) {
      i2 = i >> 1;
      for (int j = 0; j < 8; j++)
        if (!(i2 & (1 << j)))
          m1[0][i2 | (1 << j)][i] = min(c[j + 1], m1[0][i2 | (1 << j)][i]);
    } else {
      m1[0][i >> 1][i] = min(0ll, m1[0][i >> 1][i]);
    }
  }
  for (int i = 1; i <= 28; i++) {
    for (int i3 = 0; i3 < N; i3++) {
      for (int i1 = 0; i1 < N; i1++) {
        for (int i2 = 0; i2 < N; i2++) {
          m1[i][i1][i2] =
              min(m1[i][i1][i2], m1[i - 1][i1][i3] + m1[i - 1][i3][i2]);
        }
      }
    }
  }
}
long long ans[MAXN], ans2[MAXN], ans3;
struct Q1 {
  long long a, b;
} Q[30];
bool cmp(const Q1 &A, const Q1 &B) { return A.a < B.a; }
int main() {
  memset(ans, 0x3f, sizeof(ans));
  memset(c, 0x3f, sizeof(c));
  cin >> x >> k >> n >> q2;
  for (int i = 1; i <= k; i++) cin >> c[i];
  ans[(1 << x) - 1] = 0;
  init();
  for (int i = 1; i <= q2; i++) {
    cin >> Q[i].a >> Q[i].b;
  }
  sort(Q + 1, Q + 1 + q2, cmp);
  for (int i = 1; i <= q2; i++) {
    if (Q[i].a <= n - x + 1) q = i;
    if (Q[i].a >= n - x + 1) ans3 += Q[i].b;
  }
  int nowt = 1;
  for (int i = 1; i <= q; i++) {
    for (int j = 28; j >= 0; j--) {
      if (nowt + (1 << j) <= Q[i].a) {
        memset(ans2, 0x3f, sizeof(ans2));
        for (int i1 = 0; i1 < N; i1++) {
          for (int i2 = 0; i2 < N; i2++) {
            ans2[i1] = min(ans2[i1], ans[i2] + m1[j][i1][i2]);
          }
        }
        for (int i1 = 0; i1 < N; i1++) ans[i1] = ans2[i1];
        nowt += (1 << j);
      }
    }
    for (int j = 0; j < N; j++) {
      if (j & 1) ans[j] += Q[i].b;
    }
  }
  for (int j = 28; j >= 0; j--) {
    if (nowt + (1 << j) <= n - x + 1) {
      memset(ans2, 0x3f, sizeof(ans2));
      for (int i1 = 0; i1 < N; i1++) {
        for (int i2 = 0; i2 < N; i2++) {
          ans2[i1] = min(ans2[i1], ans[i2] + m1[j][i1][i2]);
        }
      }
      for (int i1 = 0; i1 < N; i1++) ans[i1] = ans2[i1];
      nowt += (1 << j);
    }
  }
  cout << ans2[(1 << x) - 1] + ans3;
}
