#include <bits/stdc++.h>
using namespace std;
const int maxn = 100005;
int a[maxn], b[maxn], data[maxn * 2], sum[maxn * 2], que[maxn * 2][2],
    tot[maxn], n;
map<int, bool> ans;
void init() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  for (int i = 0; i < n; i++) scanf("%d", &b[i]);
}
void prepare(int flag) {
  if (!flag) {
    for (int i = 0; i < n; i++) {
      data[i] = a[i] - b[i];
    }
  } else {
    for (int i = 0; i < n - 1; i++) {
      data[i] = a[n - 1 - i] - b[n - i - 2];
    }
    data[n - 1] = a[0] - b[n - 1];
  }
  for (int i = n; i < 2 * n - 1; i++) data[i] = data[i - n];
  for (int i = 0; i < 2 * n - 1; i++) {
    if (i)
      sum[i] = sum[i - 1] + data[i];
    else
      sum[i] = data[i];
  }
}
void work(int flag) {
  int hd = 0, tl = 0;
  for (int i = 0; i < n; i++) {
    while (hd < tl && que[tl - 1][0] >= sum[i]) tl--;
    que[tl][0] = sum[i];
    que[tl++][1] = i;
  }
  for (int i = n; i < 2 * n - 1; i++) {
    tot[i - n] = que[hd][0];
    while (i - que[hd][1] >= n && hd < tl) hd++;
    while (hd < tl && que[tl - 1][0] >= sum[i]) tl--;
    que[tl][0] = sum[i];
    que[tl++][1] = i;
  }
  tot[n - 1] = que[hd][0];
  for (int i = 0; i < n; i++) {
    int t = flag ? n - 1 - i : i;
    if (i) {
      if (tot[i] - sum[i - 1] >= 0) ans[t] = 1;
    } else if (tot[i] >= 0)
      ans[t] = 1;
  }
}
void print() {
  printf("%d\n", ans.size());
  for (map<int, bool>::iterator index = ans.begin(); index != ans.end();
       index++) {
    printf("%d ", index->first + 1);
  }
  printf("\n");
}
int main() {
  init();
  for (int i = 0; i < 2; i++) {
    prepare(i);
    work(i);
  }
  print();
  return 0;
}
