#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
const i64 INF = 1e18;
const int MAXK = 8;
const int MAXQ = 25;
const int MAXL = 27;
int x, k, n, q;
int c[MAXK + 1];
pair<int, int> p[MAXQ];
i64 mat[MAXL][1 << MAXK][1 << MAXK];
vector<i64> matpow(vector<i64> f, int e) {
  for (int l = 0; (1 << l) <= e; ++l) {
    if (e >> l & 1) {
      vector<i64> tmp(1 << k, INF);
      for (int i = 0; i < (1 << k); ++i)
        for (int j = 0; j < (1 << k); ++j) {
          if (f[i] != INF && mat[l][i][j] != INF) {
            tmp[j] = min(tmp[j], f[i] + mat[l][i][j]);
          }
        }
      f.swap(tmp);
    }
  }
  return f;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(0);
  cin >> x >> k >> n >> q;
  for (int i = 1; i < (k + 1); ++i) cin >> c[i];
  for (int i = 0; i < (q); ++i) cin >> p[i].first >> p[i].second;
  sort(p, p + q);
  for (int l = 0; l < (MAXL); ++l)
    for (int i = 0; i < (1 << k); ++i)
      for (int j = 0; j < (1 << k); ++j) {
        mat[l][i][j] = INF;
      }
  for (int mask = 0; mask < (1 << k); ++mask) {
    if (__builtin_popcount(mask) != x) {
      continue;
    }
    if (!(mask & 1)) {
      mat[0][mask][mask >> 1] = 0;
    } else {
      int nmask = mask >> 1;
      for (int i = 0; i < (k); ++i) {
        if (!(nmask >> i & 1)) {
          mat[0][mask][nmask | (1 << i)] = c[i + 1];
        }
      }
    }
  }
  for (int l = 0; l < (MAXL - 1); ++l) {
    for (int m = 0; m < (1 << k); ++m)
      for (int i = 0; i < (1 << k); ++i)
        for (int j = 0; j < (1 << k); ++j) {
          if (mat[l][i][m] != INF && mat[l][m][j] != INF) {
            mat[l + 1][i][j] =
                min(mat[l + 1][i][j], mat[l][i][m] + mat[l][m][j]);
          }
        }
  }
  vector<i64> f(1 << k, INF);
  f[(1 << x) - 1] = 0;
  int last = 1;
  for (int i = 0; i < (q); ++i) {
    if (p[i].first >= n - x + 1) {
      continue;
    }
    f = matpow(f, p[i].first - last);
    last = p[i].first;
    for (int mask = 0; mask < (1 << k); ++mask) {
      if ((mask & 1) && f[mask] != INF) f[mask] += p[i].second;
    }
  }
  f = matpow(f, n - x + 1 - last);
  i64 res = f[(1 << x) - 1];
  for (int i = 0; i < (q); ++i) {
    if (p[i].first >= n - x + 1) res += p[i].second;
  }
  cout << res << endl;
  return 0;
}
