#include <bits/stdc++.h>
using namespace std;
int n, s[1000005], t[1000005];
int bef[1000005][2];
long long ss, st, cs, ct;
bool sw;
int main() {
  memset(bef, -1, sizeof(bef));
  bef[0][0] = bef[0][1] = 0;
  scanf("%d", &n);
  for (int i = (1); i <= (n); i++) scanf("%d", &s[i]), ss += s[i];
  for (int i = (1); i <= (n); i++) scanf("%d", &t[i]), st += t[i];
  if (ss < st) {
    swap(ss, st);
    for (int i = (1); i <= (n); i++) swap(s[i], t[i]);
    sw = true;
  }
  int p = 0;
  for (int i = (1); i <= (n); i++) {
    ct += t[i];
    while (p < n && cs + s[p + 1] <= ct) cs += s[++p];
    long long d = ct - cs;
    assert(d >= 0 && d < n);
    if (bef[d][0] == -1) {
      bef[d][0] = p;
      bef[d][1] = i;
    } else {
      if (sw) {
        printf("%d\n", i - bef[d][1]);
        for (int j = (bef[d][1] + 1); j <= (i); j++)
          printf("%d%c", j, j == i ? '\n' : ' ');
      }
      printf("%d\n", p - bef[d][0]);
      for (int j = (bef[d][0] + 1); j <= (p); j++)
        printf("%d%c", j, j == p ? '\n' : ' ');
      if (!sw) {
        printf("%d\n", i - bef[d][1]);
        for (int j = (bef[d][1] + 1); j <= (i); j++)
          printf("%d%c", j, j == i ? '\n' : ' ');
      }
      return 0;
    }
  }
}
