#include <bits/stdc++.h>
using namespace std;
const int N = 2e6 + 5;
int n, m, k;
int a[N];
vector<int> g[10];
vector<long long> sum[10];
bool vis1[N], vis2[N];
void solve(int id) {
  sort(g[id].begin(), g[id].end());
  if ((int)g[id].size() == 0) return;
  sum[id].push_back(g[id][0]);
  for (int i = (1); i < ((int)g[id].size()); i++) {
    sum[id].push_back(sum[id][i - 1] + g[id][i]);
  }
}
long long check(int i, int x) {
  long long s = 0;
  int cnt = 0, to = m - i - max(2 * (k - i), 0), id, sid, cnt2 = 0;
  id = upper_bound(g[1].begin() + max(k - i, 0), g[1].end(), x) - g[1].begin();
  sid = lower_bound(g[1].begin() + max(k - i, 0), g[1].end(), x) - g[1].begin();
  cnt2 += max(0, id - sid);
  if (id) s += sum[1][id - 1];
  cnt += max(id - max(k - i, 0), 0);
  id = upper_bound(g[2].begin() + max(k - i, 0), g[2].end(), x) - g[2].begin();
  sid = lower_bound(g[2].begin() + max(k - i, 0), g[2].end(), x) - g[2].begin();
  if (id) s += sum[2][id - 1];
  cnt += max(id - max(k - i, 0), 0);
  cnt2 += max(0, id - sid);
  id = upper_bound(g[0].begin(), g[0].end(), x) - g[0].begin();
  sid = lower_bound(g[0].begin(), g[0].end(), x) - g[0].begin();
  cnt += id;
  cnt2 += max(0, id - sid);
  if (id) s += sum[0][id - 1];
  if (cnt < to) return 1e18;
  s -= (long long)min(cnt2, cnt - to) * x;
  return s;
}
int main() {
  cin >> n >> m >> k;
  for (int i = (1); i < (n + 1); i++) cin >> a[i];
  int x, y;
  cin >> x;
  while (x--) {
    cin >> y;
    vis1[y] = true;
  }
  cin >> x;
  while (x--) {
    cin >> y;
    vis2[y] = true;
  }
  for (int i = (1); i < (n + 1); i++) {
    if (!vis1[i] && !vis2[i]) g[0].push_back(a[i]);
    if (vis1[i] && !vis2[i]) g[1].push_back(a[i]);
    if (!vis1[i] && vis2[i]) g[2].push_back(a[i]);
    if (vis1[i] && vis2[i]) g[3].push_back(a[i]);
  }
  for (int i = (0); i < (4); i++) solve(i);
  long long ans = 1e18;
  for (int i = (0); i < (min((int)g[3].size(), m) + 1); i++) {
    if ((int)g[2].size() < k - i || (int)g[1].size() < k - i) continue;
    if (i + 2 * (k - i) > m) continue;
    long long res = 0;
    if (i) res += sum[3][i - 1];
    int L = 0, R = 1e9 + 7;
    long long s = 1e18;
    while (L <= R) {
      int mid = (L + R) / 2;
      long long now = check(i, mid);
      if (now != 1e18) {
        s = min(s, now);
        R = mid - 1;
      } else
        L = mid + 1;
    }
    ans = min(ans, res + s);
  }
  if (ans >= 1e18) ans = -1;
  cout << ans << endl;
  return 0;
}
