#include <bits/stdc++.h>
using namespace std;
const int N = 4000;
const int M = 40000;
const int INF = 0x3f3f3f3f;
struct Edge {
  int u, v, next, cap, cost;
  Edge() {}
  Edge(int u, int v, int next, int cap, int cost)
      : u(u), v(v), next(next), cap(cap), cost(cost) {}
} e[M * 2];
int head[N], total;
void init() {
  memset(head, -1, sizeof(head));
  total = 0;
}
void adde(int u, int v, int cap, int cost) {
  e[total] = Edge(u, v, head[u], cap, cost);
  head[u] = total++;
  e[total] = Edge(v, u, head[v], 0, -cost);
  head[v] = total++;
}
int dis[N], vis[N], low[N], pre[N];
queue<int> qq;
int spfa(int s, int t) {
  memset(dis, 0x3f, sizeof(dis));
  memset(vis, 0, sizeof(vis));
  memset(low, 0, sizeof(low));
  qq.push(s);
  vis[s] = 1, dis[s] = 0;
  low[s] = INF;
  while (!qq.empty()) {
    int u = qq.front();
    qq.pop();
    vis[u] = 0;
    for (int i = head[u]; i != -1; i = e[i].next)
      if (e[i].cap) {
        int v = e[i].v;
        if (dis[v] > dis[u] + e[i].cost) {
          dis[v] = dis[u] + e[i].cost;
          pre[v] = i;
          low[v] = min(low[u], e[i].cap);
          if (!vis[v]) {
            vis[v] = 1;
            qq.push(v);
          }
        }
      }
  }
  return low[t];
}
int mcmf(int s, int t) {
  int flow = 0, cost = 0;
  while (spfa(s, t)) {
    for (int i = t; i != s; i = e[pre[i]].u) {
      int id = pre[i];
      e[id].cap -= low[t];
      e[id ^ 1].cap += low[t];
    }
    flow += low[t];
    cost += dis[t];
  }
  return cost;
}
void sou(int s) {
  qq.push(s);
  vis[s] = 1;
  while (!qq.empty()) {
    int u = qq.front();
    qq.pop();
    for (int i = head[u]; i != -1; i = e[i].next)
      if (i % 2 == 1 && e[i].cap) {
        int v = e[i].v;
        if (!vis[v]) {
          vis[v] = 1;
          qq.push(v);
        }
      }
  }
}
int aa[N], bb[N];
int main() {
  int n, p, s;
  while (scanf("%d%d%d", &n, &p, &s) != EOF) {
    init();
    for (int i = 1; i <= n; i++) scanf("%d", &aa[i]);
    for (int i = 1; i <= n; i++) scanf("%d", &bb[i]);
    int ss = 0, tt = n + 2 + 1, x = n + 1, y = n + 2;
    for (int i = 1; i <= n; i++) {
      adde(ss, i, 1, 0);
    }
    for (int i = 1; i <= n; i++) {
      adde(i, x, 1, -aa[i]);
      adde(i, y, 1, -bb[i]);
    }
    adde(x, tt, p, 0);
    adde(y, tt, s, 0);
    int xx = mcmf(ss, tt);
    printf("%d\n", -xx);
    memset(vis, 0, sizeof(vis));
    sou(x);
    int cnt = 0;
    for (int i = 1; i <= n; i++) {
      if (vis[i] == 1) {
        cnt++;
        printf("%d%c", i, cnt == p ? '\n' : ' ');
      }
    }
    memset(vis, 0, sizeof(vis));
    sou(y);
    cnt = 0;
    for (int i = 1; i <= n; i++) {
      if (vis[i] == 1) {
        cnt++;
        printf("%d%c", i, cnt == s ? '\n' : ' ');
      }
    }
  }
  return 0;
}
