#include <bits/stdc++.h>
using namespace std;
long long n, m, k, b[200020], v[200020], h[200020], t, sum[4][200020], tt[4],
    w[200020];
long long c[3][200020], G[4][200020], ans;
long long read() {
  long long x = 0;
  char ch = getchar();
  while (ch < '0' || ch > '9') ch = getchar();
  while (ch >= '0' && ch <= '9') {
    x = (x << 3) + (x << 1) + ch - '0';
    ch = getchar();
  }
  return x;
}
void add(long long k, long long x) {
  for (; x <= t; x += x & -x) c[k][x]++;
}
long long ask(long long k, long long x) {
  long long y = 0;
  for (; x; x -= x & -x) y += c[k][x];
  return y;
}
signed main() {
  n = read();
  m = read();
  k = read();
  if (k > m) {
    cout << "-1";
    return 0;
  }
  for (long long i = 1; i <= n; i++) w[i] = read(), b[i] = w[i];
  sort(b + 1, b + n + 1);
  for (long long i = 1; i <= n; i++)
    if (i == 1 || b[i] != b[i - 1]) h[++t] = b[i];
  long long v1 = read();
  for (long long i = 1; i <= v1; i++) {
    long long pos = read();
    v[pos]++;
  }
  v1 = read();
  for (long long i = 1; i <= v1; i++) {
    long long pos = read();
    v[pos] += 2;
  }
  for (long long i = 1; i <= n; i++)
    w[i] = lower_bound(h + 1, h + t + 1, w[i]) - h;
  for (long long i = 1; i <= n; i++) {
    if (v[i] != 3) add(v[i], w[i]);
    sum[v[i]][++sum[v[i]][0]] = w[i];
    tt[v[i]]++;
  }
  for (long long i = 0; i <= 3; i++) sort(sum[i] + 1, sum[i] + sum[i][0] + 1);
  for (long long j = 0; j <= 3; ++j)
    for (long long i = 1; i <= sum[j][0]; ++i)
      G[j][i] = G[j][i - 1] + h[sum[j][i]];
  ans = -1;
  for (long long i = max(0ll, m - tt[1] - tt[0] - tt[2]); i <= min(m, tt[3]);
       i++) {
    long long g = max(k - i, 0ll);
    if (g > tt[1] || g > tt[2]) continue;
    if (i + g + g > m) continue;
    long long l = 0, r = t - 1;
    while (l < r) {
      long long mid = (l + r + 1) >> 1;
      long long sum0 = ask(0, mid);
      long long sum1 = ask(1, mid);
      long long sum2 = ask(2, mid);
      if (sum1 < g)
        sum1 = 0;
      else
        sum1 -= g;
      if (sum2 < g)
        sum2 = 0;
      else
        sum2 -= g;
      if (sum1 + sum2 + sum0 >= m - i - g - g)
        r = mid - 1;
      else
        l = mid;
    }
    long long h0 =
        upper_bound(sum[0] + 1, sum[0] + sum[0][0] + 1, l) - sum[0] - 1;
    long long h1 =
        upper_bound(sum[1] + 1, sum[1] + sum[1][0] + 1, l) - sum[1] - 1;
    long long v1 = 0;
    if (h1 <= g)
      v1 = G[1][g];
    else
      v1 = G[1][h1];
    long long v2 = 0;
    long long h2 =
        upper_bound(sum[2] + 1, sum[2] + sum[2][0] + 1, l) - sum[2] - 1;
    if (h2 <= g)
      v2 = G[2][g];
    else
      v2 = G[2][h2];
    long long sum0 = ask(0, l);
    long long sum1 = ask(1, l);
    long long sum2 = ask(2, l);
    if (sum1 < g)
      sum1 = 0;
    else
      sum1 -= g;
    if (sum2 < g)
      sum2 = 0;
    else
      sum2 -= g;
    if (ans == -1)
      ans = G[3][i] + G[0][h0] + v1 + v2 +
            1ll * h[l + 1] * (m - i - g - g - sum1 - sum2 - sum0);
    else
      ans = min(ans, G[3][i] + G[0][h0] + v1 + v2 +
                         1ll * h[l + 1] * (m - i - g - g - sum1 - sum2 - sum0));
  }
  cout << ans;
  return 0;
}
