#include <bits/stdc++.h>
using namespace std;
int n, s, p;
const int N = 4000;
struct T {
  int a, b, i;
} a[N];
bool cmp(T A, T o) {
  return make_tuple(A.a - A.b, A.a, -A.b) > make_tuple(o.a - o.b, o.a, -o.b);
}
const int inf = 1e9;
int dp[N][N], nxt[N][N];
int dp2[N][N], nxt2[N][N];
int f(int i, int cntA) {
  if (i == -1) return cntA == 0 ? 0 : -inf;
  int &ret = dp[i][cntA];
  if (ret != -1) return ret;
  ret = f(i - 1, cntA);
  nxt[i][cntA] = 0;
  if (cntA > 0) {
    int res = a[i].a + f(i - 1, cntA - 1);
    if (res > ret) {
      nxt[i][cntA] = 1;
      ret = res;
    }
  }
  return ret;
}
int g(int i, int cntB) {
  if (i == n) return cntB == 0 ? 0 : -inf;
  int &ret = dp2[i][cntB];
  if (ret != -1) return ret;
  ret = g(i + 1, cntB);
  nxt2[i][cntB] = 0;
  if (cntB > 0) {
    int res = a[i].b + g(i + 1, cntB - 1);
    if (res > ret) {
      ret = res;
      nxt2[i][cntB] = 1;
    }
  }
  return ret;
}
int main() {
  memset(dp, -1, sizeof dp);
  memset(dp2, -1, sizeof dp);
  memset(nxt, -1, sizeof nxt);
  memset(nxt2, -1, sizeof nxt2);
  scanf("%d%d%d", &n, &p, &s);
  for (int i = 0; i < (int(n)); i++) scanf("%d", &a[i].a);
  for (int i = 0; i < (int(n)); i++) scanf("%d", &a[i].b);
  for (int i = 0; i < (int(n)); i++) a[i].i = i;
  sort(a, a + n, cmp);
  f(n - 1, p);
  g(0, s);
  int ans = -inf;
  int idx = -1;
  for (int pref = p - 1; pref < n - s; ++pref) {
    int res = f(pref, p) + g(pref + 1, s);
    if (res > ans) {
      ans = res;
      idx = pref;
    }
  }
  printf("%d\n", ans);
  vector<int> as, bs;
  int cntA = p;
  for (int i = idx; i >= 0; --i) {
    if (nxt[i][cntA]) as.push_back(a[i].i + 1), cntA--;
  }
  int cntB = s;
  for (int i = idx + 1; i < n; ++i) {
    if (nxt2[i][cntB]) bs.push_back(a[i].i + 1), cntB--;
  }
  for (int i = 0; i < (int(p)); i++)
    printf("%d%c", as[i], i == p - 1 ? '\n' : ' ');
  for (int i = 0; i < (int(s)); i++)
    printf("%d%c", bs[i], i == s - 1 ? '\n' : ' ');
}
