#include <bits/stdc++.h>
using namespace std;
namespace MCMF {
const int SUP = 0xc0c0c0c0;
const int INF = 0x3f3f3f3f;
const int maxN = 3010;
struct edge {
  int to, flow, cost, ridx;
  edge(int to, int flow, int cost, int ridx)
      : to(to), flow(flow), cost(cost), ridx(ridx) {}
};
int dis[maxN];
int cap[maxN];
bool vis[maxN];
edge* pre[maxN];
vector<edge> G[maxN];
queue<int> q;
inline edge& redge(const edge& e) { return G[e.to][e.ridx]; }
inline int& rflow(const edge& e) { return redge(e).flow; }
inline void add_edge(int u, int v, int w, int x) {
  int n = G[v].size(), m = G[u].size();
  G[u].emplace_back(v, w, +x, n);
  G[v].emplace_back(u, 0, -x, m);
}
template <class Compare, int inf>
bool bellmam_ford(int s, int t) {
  Compare compare;
  memset(dis, inf, sizeof dis);
  cap[s] = INF, dis[s] = 0;
  for (q.push(s); q.size(); q.pop()) {
    int u = q.front();
    vis[u] = false;
    for (auto& e : G[u]) {
      if (e.flow == 0) continue;
      if (compare(dis[u] + e.cost, dis[e.to])) {
        cap[e.to] = min(cap[u], e.flow);
        dis[e.to] = dis[u] + e.cost;
        pre[e.to] = &e;
        if (vis[e.to] == false) {
          vis[e.to] = true;
          q.push(e.to);
        }
      }
    }
  }
  return dis[t] != inf;
}
void MCMF(int s, int t, int& flow, int& cost) {
  flow = cost = 0;
  while (bellmam_ford<less<int>, INF>(s, t)) {
    cost += dis[t] * cap[t];
    flow += cap[t];
    for (int u = t; u != s;) {
      edge& e = *pre[u];
      rflow(e) += cap[t];
      e.flow -= cap[t];
      u = redge(e).to;
    }
  }
}
}  // namespace MCMF
const int N = 3300;
int a[N], b[N];
int main() {
  ios_base::sync_with_stdio(0);
  int n, p, s;
  cin >> n >> p >> s;
  int S = n + 1, P = S + 1, src = 0, sink = P + 1;
  for (int i = 1; i <= n; i++) cin >> a[i];
  for (int i = 1; i <= n; i++) cin >> b[i];
  for (int i = 1; i <= n; i++)
    MCMF::add_edge(src, i, 1, 0), MCMF::add_edge(i, P, 1, -a[i]),
        MCMF::add_edge(i, S, 1, -b[i]);
  MCMF::add_edge(P, sink, p, 0), MCMF::add_edge(S, sink, s, 0);
  int flw = 0, cst = 0;
  MCMF::MCMF(src, sink, flw, cst);
  cout << -cst << endl;
  for (auto it : MCMF::G[P])
    if (it.flow && it.to <= n) cout << it.to << " ";
  cout << endl;
  for (auto it : MCMF::G[S])
    if (it.flow && it.to <= n) cout << it.to << " ";
  cout << endl;
  return 0;
}
