#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("omit-frame-pointer")
#pragma GCC optimize("unroll-loops")
const int MAXINT = 2147483640;
const long long MAXLL = 9223372036854775800LL;
const long long MAXN = 1000000;
const double pi = 3.1415926535897932384626433832795;
using namespace std;
long long f[300000];
long long st1[300000];
long long st2[300000];
long long st3[300000];
long long st4[300000];
long long x1[300000];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  srand(time(0));
  long long ans = 0, n, m, k, i, n1, a, res = 1e18, b;
  long long stn1 = 0, stn2 = 0, stn3 = 0, stn4 = 0;
  cin >> n >> m >> k;
  for (i = 1; i <= n; i++) cin >> x1[i];
  cin >> n1;
  for (i = 1; i <= n1; i++) {
    cin >> a;
    f[a] = 1;
  }
  cin >> n1;
  for (i = 1; i <= n1; i++) {
    cin >> a;
    if (f[a] == 1) {
      f[a] = 3;
      st3[++stn3] = x1[a];
    } else
      f[a] = 2;
  }
  for (i = 1; i <= n; i++) {
    if (f[i] == 1) st1[++stn1] = x1[i];
    if (f[i] == 2) st2[++stn2] = x1[i];
    if (f[i] == 0) st4[++stn4] = x1[i];
  }
  sort(st1 + 1, st1 + stn1 + 1);
  sort(st2 + 1, st2 + stn2 + 1);
  sort(st3 + 1, st3 + stn3 + 1);
  sort(st4 + 1, st4 + stn4 + 1);
  long long kol1 = 0;
  long long kol2 = 0;
  long long kol3 = 0;
  long long kol4 = 0;
  for (i = 1; i <= min(k, stn1); i++) ans += st1[++kol1];
  for (i = 1; i <= min(k, stn2); i++) ans += st2[++kol2];
  if (kol1 + kol2 == m and kol1 >= k and kol2 >= k) res = min(res, ans);
  for (i = 1; i <= stn3; i++) {
    while (kol1 != stn1 and kol1 + kol3 < k) ans += st1[++kol1];
    while (kol2 != stn2 and kol2 + kol3 < k) ans += st2[++kol2];
    while (kol1 + kol2 + kol3 + kol4 < m) {
      a = 1e9 + 1;
      b = 0;
      if (kol1 != stn1)
        if (st1[kol1 + 1] < a) a = st1[kol1 + 1], b = 1;
      if (kol2 != stn2)
        if (st2[kol2 + 1] < a) a = st2[kol2 + 1], b = 2;
      if (kol4 != stn4)
        if (st4[kol4 + 1] < a) a = st4[kol4 + 1], b = 4;
      if (b == 0) break;
      ans += a;
      if (b == 1) kol1++;
      if (b == 2) kol2++;
      if (b == 4) kol4++;
    }
    if (kol1 + kol2 + kol3 + kol4 == m and kol1 + kol3 >= k and
        kol2 + kol3 >= k)
      res = min(res, ans);
    if (kol1 != 0) ans -= st1[kol1--];
    if (kol2 != 0) ans -= st2[kol2--];
    if (kol4 != 0) ans -= st4[kol4--];
    ans += st3[++kol3];
  }
  while (kol1 != stn1 and kol1 + kol3 < k) ans += st1[++kol1];
  while (kol2 != stn2 and kol2 + kol3 < k) ans += st2[++kol2];
  while (kol1 + kol2 + kol3 + kol4 < m) {
    a = 1e9 + 1;
    b = 0;
    if (kol1 != stn1)
      if (st1[kol1 + 1] < a) a = st1[kol1 + 1], b = 1;
    if (kol2 != stn2)
      if (st2[kol2 + 1] < a) a = st2[kol2 + 1], b = 2;
    if (kol4 != stn4)
      if (st4[kol4 + 1] < a) a = st4[kol4 + 1], b = 4;
    if (b == 0) break;
    ans += a;
    if (b == 1) kol1++;
    if (b == 2) kol2++;
    if (b == 4) kol4++;
  }
  if (kol1 + kol2 + kol3 + kol4 == m and kol1 + kol3 >= k and kol2 + kol3 >= k)
    res = min(res, ans);
  if (res != 1e18)
    cout << res << endl;
  else
    cout << -1 << endl;
  return 0;
}
