#include <bits/stdc++.h>
using namespace std;
void load() {}
const int N = 1e5 + 123;
int pre[N], a[N], dis[N], suf[N], mem[N], L[N][22], R[N][22];
int get(int typ, int l, int r) {
  int cs = 0;
  for (int i = 1; i < 20; ++i)
    if ((1 << i) < (r - l + 1)) cs = i;
  if (typ == 0) return min(L[l][cs], L[r - (1 << cs) + 1][cs]);
  return min(R[l][cs], R[r - (1 << cs) + 1][cs]);
}
void trungtt() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
  for (int i = 1; i <= n; ++i) scanf("%d", &dis[i]);
  int tmp = 0;
  pre[0] = 1e9;
  for (int i = 1; i <= n; ++i) {
    tmp += (a[i] - dis[i]);
    pre[i] = tmp;
  }
  tmp = 0;
  suf[n + 1] = 1e9;
  for (int i = n; i > 0; --i) {
    tmp += a[i];
    if (i == 1)
      tmp -= dis[n];
    else
      tmp -= dis[i - 1];
    suf[i] = tmp;
  }
  for (int i = 1; i <= n; ++i) L[i][0] = pre[i], R[i][0] = suf[i];
  for (int j = 1; j < 20; ++j)
    for (int i = 1; i + (1 << j) <= n + 1; ++i)
      L[i][j] = min(L[i][j - 1], L[i + (1 << (j - 1))][j - 1]),
      R[i][j] = min(R[i][j - 1], R[i + (1 << (j - 1))][j - 1]);
  int cnt = 0;
  for (int i = 1; i <= n; ++i) {
    bool ok = 0;
    int cur = pre[i - 1];
    if (i == 1) cur = 0;
    if (get(0, i, n) >= cur) {
      cur = pre[n] - pre[i - 1];
      if (i == 1) cur = pre[n];
      if (get(0, 1, i) >= -cur) ok = 1;
    }
    if (i == n)
      cur = 0;
    else
      cur = suf[i + 1];
    if (get(1, 1, i) >= cur) {
      cur = (suf[1] - suf[i + 1]);
      if (i == n) cur = suf[1];
      if (get(1, i, n) >= -cur) ok = 1;
    }
    if (ok) ++cnt, mem[cnt] = i;
  }
  printf("%d\n", cnt);
  for (int i = 1; i <= cnt; ++i) printf("%d ", mem[i]);
  return;
}
int main() {
  load();
  trungtt();
  return 0;
}
