#include <bits/stdc++.h>

using namespace std;

const long long B = 1e8;

const int N = 5e4 + 10;

int b, k, cd, cp;
int d[N];
int p[N];
int idxd[N];
int idxp[N];

struct bigInt {
  long long a[8];
  bigInt(long long t = 0) {
    for (int i = 0; i < 8; ++i) {
      a[i] = t % B;
      t /= B;
    }
  }
  bigInt operator+(bigInt t) {
    bigInt c;
    for (int i = 0; i < 8; ++i) {
      c.a[i] = a[i] + t.a[i];
    }
    long long ca = 0;
    for (int i = 0; i < 8; ++i) {
      ca = (c.a[i] + ca) / B;
      c.a[i] = (c.a[i] + ca) % B;
    }
    return c;
  }
  bigInt operator*(bigInt t) {
    bigInt c;
    for (int i = 0; i < 8; ++i) {
      for (int j = 0; j + i < 8; ++j) {
        c.a[i + j] += a[i] * t.a[j];
      }
    }
    long long ca = 0;
    for (int i = 0; i < 8; ++i) {
      c.a[i] += ca;
      ca = c.a[i] / B;
      c.a[i] %= B;
    }
    return c;
  }
  int cmp(bigInt t) {
    for (int i = 7; i >= 0; --i) {
      if (t.a[i] > a[i]) return -1;
      else if (a[i] > t.a[i]) return 1;
    }
    return 0;
  }
  void print() {
    for (int i = 7; i >= 0; --i) {
      printf("%08lld", a[i]);
    }
    printf("\n");
  }
};

long long sumd[N];
long long sump[N];

int cmpd(int a, int b) {
  return d[a] > d[b];
}

int cmpp(int a, int b) {
  return p[a] > p[b];
}

int main() {
  freopen("buffcraft.in", "r", stdin);
  freopen("buffcraft.out", "w", stdout);
/*  bigInt b = 1250050000;
  bigInt a = 1250000100;
  (a*b).print();
  bigInt a = 1e17;
  a = a * a;
  for (int i = 7; i >= 0; --i) {
    printf("%08lld", a.a[i]);
  }
  printf("\n");*/
  
  scanf("%d%d%d%d", &b, &k, &cd, &cp);
//  b=k=cd=cp=50000;
  for (int i = 1; i <= cd; ++i) {
    scanf("%d", d + i);
//    d[i]=50000;
  }
  for (int i = 1; i <= cp; ++i) {
    scanf("%d", p + i);
//    p[i]=50000;
  }
  for (int i = 1; i <= cd; ++i) {
    idxd[i] = i;
  }
  for (int i = 1; i <= cp; ++i) {
    idxp[i] = i;
  }
  sort(idxd + 1, idxd + cd + 1, cmpd);
  sort(idxp + 1, idxp + cp + 1, cmpp);
  for (int i = 1; i <= cd; ++i) {
    sumd[i] = sumd[i - 1] + d[idxd[i]];
  }
  for (int i = 1; i <= cp; ++i) {
    sump[i] = sump[i - 1] + p[idxp[i]];
  }
  bigInt ans = 0;
  int pos = 0;
  for (int i = 0; i <= k; ++i) {
    long long s1 = sumd[min(i, cd)];
    long long s2 = sump[min(k - i, cp)];
//    printf("%lld %lld\n", b + s1, 100 + s2);
    bigInt tmp = (bigInt)(b + s1) * (bigInt)(100 + s2);
//    printf("%6d: ", i);
//    tmp.print();
    if (ans.cmp(tmp) < 0) {
      ans = tmp;
      pos = i;
    }
  }
//  ans.print();
  printf("%d %d\n", min(pos, cd), min(k - pos, cp));
  
  for (int i = 1; i <= min(pos, cd); ++i) {
    printf("%d%c", idxd[i], i == min(pos, cd) ? '\n' : ' ');
  }
  for (int i = 1; i <= min(k - pos, cp); ++i) {
    printf("%d%c", idxp[i], i == min(k - pos, cp) ? '\n' : ' ');
  }
  return 0;
}
