#include <bits/stdc++.h>
using namespace std;
int n, P, S;
int s, t;
vector<int> res1, res2;
struct node {
  int to;
  int cap;
  int opp;
  int cost;
};
vector<node> v[3500];
int d[3500];
bool in[3500];
int pre[3500], wh[3500];
void add(int x, int y, int cap, int cost) {
  node tmp;
  tmp.to = y;
  tmp.cap = cap;
  tmp.cost = cost;
  tmp.opp = v[y].size();
  v[x].push_back(tmp);
  tmp.to = x;
  tmp.cap = 0;
  tmp.cost = -cost;
  tmp.opp = v[x].size() - 1;
  v[y].push_back(tmp);
}
bool spfa() {
  memset(in, 0, sizeof(in));
  for (int i = s; i <= t; i++) d[i] = -199912310;
  queue<int> q;
  q.push(s);
  d[s] = 0;
  while (!q.empty()) {
    int x = q.front();
    q.pop();
    in[x] = false;
    for (int i = 0; i < (int)v[x].size(); i++) {
      if (v[x][i].cap <= 0) continue;
      if (d[v[x][i].to] < d[x] + v[x][i].cost) {
        d[v[x][i].to] = d[x] + v[x][i].cost;
        pre[v[x][i].to] = x;
        wh[v[x][i].to] = i;
        if (!in[v[x][i].to]) {
          in[v[x][i].to] = true;
          q.push(v[x][i].to);
        }
      }
    }
  }
  return d[t] != -199912310;
}
long long max_flow() {
  long long ret = 0;
  while (spfa()) {
    int flow = 199912310;
    for (int i = t; i; i = pre[i]) {
      flow = min(flow, v[pre[i]][wh[i]].cap);
    }
    ret += 1ll * flow * d[t];
    for (int i = t; i; i = pre[i]) {
      v[pre[i]][wh[i]].cap -= flow;
      v[i][v[pre[i]][wh[i]].opp].cap += flow;
    }
  }
  return ret;
}
int main() {
  scanf("%d", &n);
  scanf("%d%d", &P, &S);
  s = 0;
  t = n + 3;
  for (int i = 1; i <= n; i++) {
    int x;
    scanf("%d", &x);
    add(i, n + 1, 1, x);
  }
  for (int i = 1; i <= n; i++) {
    int x;
    scanf("%d", &x);
    add(i, n + 2, 1, x);
    add(0, i, 1, 0);
  }
  add(n + 1, t, P, 0);
  add(n + 2, t, S, 0);
  printf("%d\n", max_flow());
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < (int)v[i].size(); j++) {
      if (v[i][j].to == n + 1 && v[i][j].cap == 0) {
        res1.push_back(i);
      }
      if (v[i][j].to == n + 2 && v[i][j].cap == 0) {
        res2.push_back(i);
      }
    }
  }
  for (int i = 0; i < (int)res1.size(); i++) printf("%I64d ", res1[i]);
  puts("");
  for (int i = 0; i < (int)res2.size(); i++) printf("%d ", res2[i]);
  puts("");
  return 0;
}
