#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int inf = 1e9 + 7;
int s[4][222222];
int num[4], st[4];
ll cost[222222];
long long sum;
int type[222222];
bool isused[222222];
void findmin() {
  int minnum = inf;
  for (int i = 0; i < 4; i++) minnum = min(minnum, s[i][st[i]]);
  sum += minnum;
  for (int i = 0; i < 4; i++)
    if (s[i][st[i]] == minnum) {
      st[i]++;
      break;
    }
}
int main(void) {
  int n, m, k;
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1; i < n + 1; i++) scanf("%I64d", &cost[i]);
  int a, b;
  scanf("%d", &a);
  for (int i = 1; i < a + 1; i++) {
    scanf("%d", &b);
    type[b] = 1;
  }
  scanf("%d", &a);
  for (int i = 1; i < a + 1; i++) {
    scanf("%d", &b);
    if (type[b])
      type[b] = 3;
    else
      type[b] = 2;
  }
  for (int i = 1; i < n + 1; i++) s[type[i]][num[type[i]]++] = cost[i];
  for (int i = 0; i < 4; i++) sort(s[i], s[i] + num[i]), s[i][num[i]] = inf;
  int now = k, now2 = 0;
  if (now > num[1] || now > num[2]) now = min(num[1], num[2]), now2 = k - now;
  while (now2 + 2 * now > m) now2++, now--;
  if (now < 0 || now2 > num[3]) {
    printf("-1\n");
    return 0;
  }
  int k3 = num[3];
  for (int i = 0; i < now2; i++) sum += s[3][st[3]++];
  for (int i = 0; i < now; i++) sum += s[1][st[1]++] + s[2][st[2]++];
  for (int i = 0; i < m - now * 2 - now2; i++) findmin();
  ll res = sum;
  int s2 = m;
  while (now2 < k3 && now > 0) {
    now2++, now--;
    if (st[3] < now2) sum += s[3][st[3]++], s2++;
    if (st[1] == now + 1) sum -= s[1][--st[1]], s2--;
    if (st[2] == now + 1) sum -= s[2][--st[2]], s2--;
    if (s2 > m) sum -= s[0][--st[0]];
    while (s2 < m) findmin(), s2++;
    res = min(res, sum);
  }
  printf("%I64d\n", res);
}
