#include <bits/stdc++.h>
using namespace std;
const long long N = 2e5 + 5;
long long n, m, k;
long long a[N], state[N];
vector<long long> sv[4], acc[4];
long long ans = -1;
long long get(long long idx, long long b, long long limit) {
  long long lo = b + 1, hi = sv[idx].size() - 1;
  if (lo > hi) return b;
  while (lo < hi) {
    long long md = lo + (hi - lo + 1) / 2;
    if (sv[idx][md] <= limit)
      lo = md;
    else
      hi = md - 1;
  }
  if (sv[idx][lo] > limit) return b;
  return lo;
}
int main() {
  scanf("%lld%lld%lld", &n, &m, &k);
  for (long long i = 1; i <= n; i++) {
    scanf("%lld", a + i);
  }
  long long t1, t2;
  scanf("%lld", &t1);
  for (long long i = 0; i < t1; i++) {
    long long x;
    scanf("%lld", &x);
    state[x] |= 1;
  }
  scanf("%lld", &t2);
  for (long long i = 0; i < t2; i++) {
    long long x;
    scanf("%lld", &x);
    state[x] |= 2;
  }
  for (long long i = 1; i <= n; i++) sv[state[i]].push_back(a[i]);
  sort(a + 1, a + n + 1);
  for (long long i = 0; i < 4; i++) {
    sv[i].push_back(0);
    sort(sv[i].begin(), sv[i].end());
    acc[i].push_back(0);
    for (long long j = 1; j < sv[i].size(); j++)
      acc[i].push_back(acc[i].back() + sv[i][j]);
  }
  for (long long i = 0; i < sv[3].size(); i++) {
    long long lft = max(0ll, k - i);
    if (lft >= min(sv[1].size(), sv[2].size())) continue;
    long long need = m - (i + 2 * lft);
    if (need < 0 ||
        (sv[1].size() + sv[2].size() + sv[0].size()) - 3 - 2 * lft < need)
      continue;
    long long lo = 0, hi = n;
    while (lo < hi) {
      long long md = lo + (hi - lo) / 2;
      long long cnt =
          get(1, lft, a[md]) + get(2, lft, a[md]) + get(0, 0, a[md]) - 2 * lft;
      if (cnt >= need)
        hi = md;
      else
        lo = md + 1;
    }
    long long c1 = get(1, lft, a[lo]);
    long long c2 = get(2, lft, a[lo]);
    long long c0 = get(0, 0, a[lo]);
    long long extra = c1 + c2 + c0 - 2 * lft - need;
    long long tmp =
        acc[0][c0] + acc[1][c1] + acc[2][c2] + acc[3][i] - 1ll * extra * a[lo];
    if (ans == -1 || ans > tmp) ans = tmp;
  }
  cout << ans << '\n';
}
