#include <bits/stdc++.h>
using namespace std;
inline long long rd() {
  long long x = 0;
  int ch = getchar(), f = 1;
  while (!isdigit(ch) && (ch != '-') && (ch != EOF)) ch = getchar();
  if (ch == '-') {
    f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = (x << 1) + (x << 3) + ch - '0';
    ch = getchar();
  }
  return x * f;
}
inline void rt(long long x) {
  if (x < 0) putchar('-'), x = -x;
  if (x >= 10)
    rt(x / 10), putchar(x % 10 + '0');
  else
    putchar(x + '0');
}
const int maxn = 200005;
int n, m, k;
int c[maxn], cal[maxn];
int fav[3], val[4][maxn], ta[4], nw[4], chs;
long long ans = -1, sum = 0;
void upd(long long &x, long long y) {
  if (x == -1 || y < x) x = y;
}
void Exit() {
  rt(ans), putchar('\n');
  exit(0);
}
void done(int z) {
  fav[z & 1]++, fav[z & 2]++, nw[z]++, chs++;
  sum += val[z][nw[z]];
}
void undo(int z) {
  sum -= val[z][nw[z]];
  fav[z & 1]--, fav[z & 2]--, nw[z]--, chs--;
}
void buyrem() {
  while (nw[1] < ta[1] && fav[1] < k) done(1);
  while (nw[2] < ta[2] && fav[2] < k) done(2);
  if (fav[1] < k || fav[2] < k) Exit();
  while (chs < m) {
    int mn = -1;
    for (int i = int(0); i <= (int)(2); i++)
      if (nw[i] < ta[i] &&
          ((!(~mn)) || (val[i][nw[i] + 1] < val[mn][nw[mn] + 1])))
        mn = i;
    if (~mn)
      done(mn);
    else
      return;
  }
}
void sellrem() {
  while (chs > m) {
    int mx = -1;
    for (int i = int(0); i <= (int)(2); i++)
      if (nw[i] && fav[i] > k &&
          ((!(~mx)) || (val[i][nw[i]] > val[mx][nw[mx]])))
        mx = i;
    if (~mx)
      undo(mx);
    else
      return;
  }
}
int main() {
  n = rd(), m = rd(), k = rd();
  fav[0] = 2 * n;
  if (k > m) Exit();
  for (int i = int(1); i <= (int)(n); i++) c[i] = rd();
  for (int i = rd(); i--;) cal[rd()] += 1;
  for (int i = rd(); i--;) cal[rd()] += 2;
  for (int i = int(1); i <= (int)(n); i++) val[cal[i]][++ta[cal[i]]] = c[i];
  for (int i = int(0); i <= (int)(3); i++) sort(val[i] + 1, val[i] + ta[i] + 1);
  for (int i = int(1); i <= (int)(min(ta[3], m)); i++) done(3);
  buyrem();
  if (chs == m)
    upd(ans, sum);
  else
    Exit();
  for (int i = int(min(ta[3], m) - 1); i >= (int)(0); i--) {
    undo(3);
    buyrem();
    sellrem();
    if (chs == m)
      upd(ans, sum);
    else
      Exit();
  }
  Exit();
}
