#include <bits/stdc++.h>
using namespace std;
const int N = 2E5 + 10;
int n, m, k, la, lb, v[N], a[N], s[4][N], tot[4], l[3];
long long g[4][N];
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1; i <= n; i++) scanf("%d", &v[i]);
  scanf("%d", &la);
  for (int i = 1, x; i <= la; i++) scanf("%d", &x), a[x] += 1;
  scanf("%d", &lb);
  for (int i = 1, x; i <= lb; i++) scanf("%d", &x), a[x] += 2;
  for (int i = 1; i <= n; i++) s[a[i]][++tot[a[i]]] = v[i];
  if (la < k || lb < k || (tot[3] + (k - tot[3]) * 2) > m || m < k)
    return puts("-1"), 0;
  for (int i = 0; i < 4; i++)
    sort(s[i] + 1, s[i] + 1 + tot[i]), s[i][tot[i] + 1] = 2E9;
  for (int i = 0; i < 4; i++)
    for (int j = 1; j <= tot[i]; j++) g[i][j] = g[i][j - 1] + s[i][j];
  int mi = 0;
  while (k - mi > tot[1] || k - mi > tot[2] || 2 * k - mi > m ||
         n - tot[3] + mi < m)
    mi++;
  l[0] = 0, l[1] = k - mi, l[2] = k - mi;
  int now = 0;
  while (mi + l[1] + l[2] + l[0] < m) {
    if (s[now][l[now] + 1] > s[1][l[1] + 1]) now = 1;
    if (s[now][l[now] + 1] > s[2][l[2] + 1]) now = 2;
    l[now]++;
    now = 0;
  }
  long long ans = g[0][l[0]] + g[1][l[1]] + g[2][l[2]] + g[3][mi], sum = ans;
  for (mi++; mi <= tot[3]; mi++) {
    if (!l[0])
      now = 2 - (l[1] > k - mi && l[1]);
    else
      now = 0;
    if (l[1] > k - mi && l[1] && s[now][l[now]] < s[1][l[1]]) now = 1;
    if (l[2] > k - mi && l[2] && s[now][l[now]] < s[2][l[2]]) now = 2;
    sum += s[3][mi] - s[now][l[now]--];
    while (1) {
      if (!(l[1] > k - mi && l[1]) && !(l[2] > k - mi && l[2])) break;
      now = 2 - (l[1] > k - mi && l[1]);
      if (l[1] > k - mi && l[1] && s[now][l[now]] < s[1][l[1]]) now = 1;
      if (l[2] > k - mi && l[2] && s[now][l[now]] < s[2][l[2]]) now = 2;
      if (s[now][l[now]] > s[0][l[0] + 1])
        sum += s[0][++l[0]] - s[now][l[now]--];
      else
        break;
    }
    ans = min(ans, sum);
  }
  return printf("%lld", ans), 0;
}
