#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
const long long Inf = 1e10;
const int P = 1e9 + 7;
const int N = 1000005;
inline int IN() {
  int x = 0;
  int ch = 0, f = 0;
  for (ch = getchar(); ch != -1 && (ch < 48 || ch > 57); ch = getchar())
    f = (ch == '-');
  for (; ch >= 48 && ch <= 57; ch = getchar())
    x = (x << 1) + (x << 3) + ch - '0';
  return f ? (-x) : x;
}
int Pow(int x, int y, int p) {
  int a = 1;
  for (; y; y >>= 1, x = (long long)x * x % p)
    if (y & 1) a = (long long)a * x % p;
  return a;
}
int a[N], b[N], n;
long long S1, S2;
map<long long, pair<int, int> > mps;
void work(int *a, int *b, int s) {
  long long xs = 0, ys = 0;
  int j = 0;
  mps[0] = make_pair(0, 0);
  for (int i = (int)(1); i <= (int)(n); i++) {
    xs += a[i];
    for (; j + 1 <= n && ys + b[j + 1] <= xs; j++) ys += b[j + 1];
    long long d = xs - ys;
    if (mps.count(d)) {
      int al = mps[d].first + 1, ar = i;
      int bl = mps[d].second + 1, br = j;
      if (s) swap(al, bl), swap(ar, br);
      printf("%d\n", ar - al + 1);
      for (int i = (int)(al); i <= (int)(ar); i++) printf("%d ", i);
      puts("");
      printf("%d\n", br - bl + 1);
      for (int i = (int)(bl); i <= (int)(br); i++) printf("%d ", i);
      puts("");
      exit(0);
    }
    mps[d] = make_pair(i, j);
  }
}
int main() {
  scanf("%d", &n);
  for (int i = (int)(1); i <= (int)(n); i++) scanf("%d", a + i), S1 += a[i];
  for (int i = (int)(1); i <= (int)(n); i++) scanf("%d", b + i), S2 += b[i];
  if (S1 < S2)
    work(a, b, 0);
  else
    work(b, a, 1);
  return 0;
}
