#include <bits/stdc++.h>
using namespace std;
long long read() {
  long long x = 0, f = 1;
  char ch;
  while (!isdigit(ch = getchar())) (ch == '-') && (f = -f);
  for (x = (ch ^ 48); isdigit(ch = getchar());
       x = (x << 1) + (x << 3) + (ch ^ 48))
    ;
  return x * f;
}
const int N = 2e5 + 10;
int n, m, k, vis[N];
int sa, sb, sc, len, a[N], b[N], c[N], f[N], w[N];
long long ta[N], tb[N], tc[N];
long long sum[N << 2], tag[N << 2];
void insert(int o, int x, int l, int r, int val, int id) {
  if (l == r) return (void)(sum[o] = sum[o] + val, tag[o] = tag[o] + id);
  if (x <= ((l + r) >> 1))
    insert((o << 1), x, l, ((l + r) >> 1), val, id);
  else
    insert((o << 1 | 1), x, ((l + r) >> 1) + 1, r, val, id);
  sum[o] = sum[(o << 1)] + sum[(o << 1 | 1)],
  tag[o] = tag[(o << 1)] + tag[(o << 1 | 1)];
}
long long ask(int o, int k, int l, int r) {
  if (tag[o] < k) return sum[o];
  if (k == 0) return 0;
  if (l == r) return sum[o] / tag[o] * k;
  if (k <= tag[(o << 1)])
    return ask((o << 1), k, l, ((l + r) >> 1));
  else
    return sum[(o << 1)] +
           ask((o << 1 | 1), k - tag[(o << 1)], ((l + r) >> 1) + 1, r);
}
void prework() {
  sort(f + 1, f + 1 + n);
  len = 1;
  for (int i = 2; i <= n; i++)
    if (f[i] != f[i - 1]) f[++len] = f[i];
  for (int i = 1; i <= n; i++) w[i] = lower_bound(f + 1, f + 1 + len, w[i]) - f;
  for (int i = 1; i <= n; i++) {
    if (vis[i] == 1)
      a[++sa] = w[i];
    else if (vis[i] == 2)
      b[++sb] = w[i];
    else if (vis[i] == 3)
      c[++sc] = w[i];
    else
      insert(1, w[i], 1, len, f[w[i]], 1);
  }
  sort(a + 1, a + 1 + sa);
  for (int i = 1; i <= sa; i++) ta[i] = ta[i - 1] + f[a[i]];
  sort(b + 1, b + 1 + sb);
  for (int i = 1; i <= sb; i++) tb[i] = tb[i - 1] + f[b[i]];
  sort(c + 1, c + 1 + sc);
  for (int i = 1; i <= sc; i++) tc[i] = tc[i - 1] + f[c[i]];
  int cnt = (k >= sc ? k - sc + 1 : 1);
  for (int i = cnt; i <= sa; i++) insert(1, a[i], 1, len, f[a[i]], 1);
  for (int i = cnt; i <= sb; i++) insert(1, b[i], 1, len, f[b[i]], 1);
  for (int i = k + 1; i <= sc; i++) insert(1, c[i], 1, len, f[c[i]], 1);
}
int main() {
  n = read();
  m = read();
  k = read();
  for (int i = 1; i <= n; i++) f[i] = w[i] = read();
  int la = read();
  for (int i = 1; i <= la; i++) vis[read()] += 1;
  int lb = read();
  for (int i = 1; i <= lb; i++) vis[read()] += 2;
  if (la < k || lb < k) return printf("-1\n"), 0;
  prework();
  long long ans = 1e18;
  for (int i = min(sc, k); i >= 0; i--)
    if (k - i <= sa && k - i <= sb && 2 * k - i <= m) {
      long long res = ask(1, m - 2 * k + i, 1, len);
      ans = min(ans, tc[i] + ta[k - i] + tb[k - i] + res);
      if (i > 0) insert(1, c[i], 1, len, f[c[i]], 1);
      if (k - i + 1 <= sa)
        insert(1, a[k - i + 1], 1, len, -f[a[k - i + 1]], -1);
      if (k - i + 1 <= sb)
        insert(1, b[k - i + 1], 1, len, -f[b[k - i + 1]], -1);
    }
  if (ans == 1e18)
    printf("-1\n");
  else
    printf("%lld\n", ans);
  return 0;
}
