#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
int dx[] = {0, 0, 1, -1, 1, -1, 1, -1}, dy[] = {-1, 1, 0, 0, 1, -1, -1, 1};
int n, p, s;
int a[3030], b[3030];
int f[3030][3030];
int main() {
  ios::sync_with_stdio(0);
  cin >> n >> p >> s;
  for (int i = (0), __ee = (n); i < __ee; ++i) cin >> a[i];
  for (int i = (0), __ee = (n); i < __ee; ++i) cin >> b[i];
  f[0][0] = 0;
  for (int j = 1; j <= n; ++j) f[0][j] = -(1 << 29);
  for (int i = 1; i <= n; ++i)
    for (int j = 0; j <= n; ++j) {
      f[i][j] = f[i - 1][j] + b[i - 1];
      if (j > 0) f[i][j] = max(f[i][j], f[i - 1][j - 1] + a[i - 1]);
    }
  int best = -1;
  vector<int> rp, rs;
  for (int P = p; P <= n - s; ++P) {
    if (f[n][P] < 0) continue;
    vector<int> res_p, res_s;
    int i = n, j = P;
    while (i > 0) {
      if (j > 0 && f[i][j] == f[i - 1][j - 1] + a[i - 1]) {
        res_p.push_back(i - 1);
        j--;
      } else {
        res_s.push_back(i - 1);
      }
      --i;
    }
    assert(res_p.size() == P);
    sort(res_p.begin(), res_p.end(), [&](int x, int y) { return a[x] > a[y]; });
    res_p.resize(p);
    sort(res_s.begin(), res_s.end(), [&](int x, int y) { return b[x] > b[y]; });
    res_s.resize(s);
    int T = 0;
    for (auto x : res_p) T += a[x];
    for (auto x : res_s) T += b[x];
    if (T > best) {
      rp = std::move(res_p);
      rs = std::move(res_s);
    }
    best = max(best, T);
  }
  cout << best << endl;
  sort(rp.begin(), rp.end());
  sort(rs.begin(), rs.end());
  for (auto x : rp) cout << x + 1 << " ";
  cout << endl;
  for (auto x : rs) cout << x + 1 << " ";
  cout << endl;
}
