#include <bits/stdc++.h>
inline long long read() {
  char C = getchar();
  long long N = 0, F = 1;
  while (('0' > C || C > '9') && (C != '-')) C = getchar();
  if (C == '-') F = -1, C = getchar();
  while ('0' <= C && C <= '9')
    N = (N << 1) + (N << 3) + (C - 48), C = getchar();
  return F * N;
}
long long n, a[1000010], b[1000010];
long long A[1000010], B[1000010];
struct P {
  long long x, y;
} QWQ[1000010];
long long num = 0;
long long lb = 0;
int main() {
  scanf("%lld", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%lld", &a[i]);
    A[i] = A[i - 1] + a[i];
  }
  for (int i = 1; i <= n; ++i) {
    scanf("%lld", &b[i]);
    B[i] = B[i - 1] + b[i];
  }
  bool f = 0;
  if (B[n] < A[n]) {
    f = 1;
    std::swap(A, B);
  }
  for (int i = 0; i <= n; ++i) QWQ[i].x = -1, QWQ[i].y = -1;
  long long v;
  for (int i = 0; i <= n; ++i) {
    while (B[lb] < A[i] && lb + 1 <= n) lb += 1;
    v = B[lb] - A[i];
    if (QWQ[v].x == -1)
      QWQ[v].x = i, QWQ[v].y = lb;
    else {
      num = i;
      break;
    }
  }
  if (f) std::swap(A, B), std::swap(num, lb), std::swap(QWQ[v].x, QWQ[v].y);
  std::cout << num - QWQ[v].x << std::endl;
  for (int i = QWQ[v].x + 1; i <= num; ++i) {
    std::cout << i << " ";
  }
  puts("");
  std::cout << lb - QWQ[v].y << std::endl;
  for (int i = QWQ[v].y + 1; i <= lb; ++i) {
    std::cout << i << " ";
  }
}
