#include <bits/stdc++.h>
using namespace std;
template <class T>
inline int size(const T &t) {
  return t.size();
}
int N, M, K;
vector<long long> ceny[7];
long long sumy[7][200101];
int inp[200000];
bool lubi[200000][2];
int main() {
  scanf("%d%d%d", &N, &M, &K);
  for (int a = 0; a < (N); ++a) scanf("%d", &inp[a]);
  for (int x = 0; x < (2); ++x) {
    int ileA;
    scanf("%d", &ileA);
    for (int a = 0; a < (ileA); ++a) {
      int b;
      scanf("%d", &b);
      --b;
      lubi[b][x] = 1;
    }
  }
  for (int x = 0; x < (7); ++x) ceny[x].push_back(0);
  for (int a = 0; a < (N); ++a) {
    if (lubi[a][0] && lubi[a][1])
      ceny[0].push_back(inp[a]);
    else if (lubi[a][0]) {
      ceny[2].push_back(inp[a]);
      ceny[4].push_back(inp[a]);
      ceny[6].push_back(inp[a]);
    } else if (lubi[a][1]) {
      ceny[3].push_back(inp[a]);
      ceny[5].push_back(inp[a]);
      ceny[6].push_back(inp[a]);
    } else {
      ceny[1].push_back(inp[a]);
      ceny[4].push_back(inp[a]);
      ceny[5].push_back(inp[a]);
      ceny[6].push_back(inp[a]);
    }
  }
  for (int x = 0; x < (7); ++x) {
    sort(ceny[x].begin(), ceny[x].end());
    ceny[x].resize(N + 1, (1000000000 * (long long)1000000000));
    for (int a = (1); a <= (N); ++a)
      sumy[x][a] = min((1000000000 * (long long)1000000000),
                       sumy[x][a - 1] + ceny[x][a]);
  }
  long long wyn = (1000000000 * (long long)1000000000);
  for (int ws = (0); ws <= (M); ++ws) {
    long long cur = sumy[0][ws];
    int dlaA = max(0, K - ws);
    if (dlaA * 2 + ws > M) continue;
    int inne = M - ws - 2 * dlaA;
    if (ceny[2][dlaA] < ceny[3][dlaA]) {
      if (ceny[1][inne] > ceny[2][dlaA]) {
        if (ceny[4][inne + dlaA] > ceny[3][dlaA])
          cur = sumy[0][ws] + sumy[6][inne + dlaA * 2];
        else
          cur = sumy[0][ws] + sumy[4][inne + dlaA] + sumy[3][dlaA];
      } else
        cur = sumy[0][ws] + sumy[2][dlaA] + sumy[3][dlaA] + sumy[1][inne];
    } else {
      if (ceny[1][inne] > ceny[3][dlaA]) {
        if (ceny[5][inne + dlaA] > ceny[2][dlaA])
          cur = sumy[0][ws] + sumy[6][inne + dlaA * 2];
        else
          cur = sumy[0][ws] + sumy[5][inne + dlaA] + sumy[2][dlaA];
      } else
        cur = sumy[0][ws] + sumy[2][dlaA] + sumy[3][dlaA] + sumy[1][inne];
    }
    wyn = min(wyn, cur);
  }
  printf("%I64d\n", wyn >= (1000000000 * (long long)1000000000) ? -1 : wyn);
}
