#include <bits/stdc++.h>
inline int in() {
  int k = 0;
  char ch = getchar();
  bool p = 1;
  while (ch < '-') ch = getchar();
  if (ch == '-') ch = getchar(), p = 0;
  while (ch > '-') k = k * 10 + ch - '0', ch = getchar();
  return p ? k : -k;
}
const int N = 1000005;
long long a[N], b[N];
int o[N];
std::pair<int, int> mp[N];
int main() {
  int n = in(), fg = 0;
  for (int i = 1; i <= n; ++i) a[i] = a[i - 1] + in();
  for (int i = 1; i <= n; ++i) b[i] = b[i - 1] + in();
  if (a[n] > b[n]) std::swap(a, b), fg = 1;
  for (int i = 0, j = 0; i <= n; ++i) {
    while (b[j] < a[i]) ++j;
    int p = b[j] - a[i];
    if (o[p]) {
      int lb = mp[p].second + 1, la = mp[p].first + 1;
      if (fg) {
        printf("%d\n", j - lb + 1);
        for (int k = lb; k <= j; ++k) printf("%d ", k);
        puts("");
        printf("%d\n", i - la + 1);
        for (int k = la; k <= i; ++k) printf("%d ", k);
        puts("");
      } else {
        printf("%d\n", i - la + 1);
        for (int k = la; k <= i; ++k) printf("%d ", k);
        puts("");
        printf("%d\n", j - lb + 1);
        for (int k = lb; k <= j; ++k) printf("%d ", k);
        puts("");
      }
      return 0;
    } else
      o[p] = 1, mp[p] = std::make_pair(i, j);
  }
  return 0;
}
