#include <bits/stdc++.h>
using namespace std;
int a[222222], b[222222], go[222222], remain[222222];
bool c[222222];
int n;
void func() {
  for (int i = 0; i < n; i++) {
    a[i + n] = a[i];
    b[i + n] = b[i];
  }
  for (int s = 2 * n; s >= 0; s--) {
    int gas = 0;
    for (int j = s; j <= 2 * n;) {
      go[s] = j;
      remain[s] = gas;
      if (j == 2 * n) break;
      gas += a[j];
      if (gas < b[j]) break;
      gas -= b[j];
      j++;
      gas += remain[j];
      j = go[j];
    }
  }
  for (int i = 0; i < 2 * n; i++) {
    if (go[i] >= i + n - 1) {
      c[i] = true;
    }
  }
  puts("");
}
int main() {
  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]);
  }
  func();
  for (int i = 0, j = n - 1; i < j; i++, j--) {
    swap(a[i], a[j]);
    swap(b[i], b[j]);
    swap(c[i], c[j]);
  }
  int temp = b[0];
  for (int i = 0; i < n - 1; i++) b[i] = b[i + 1];
  b[n - 1] = temp;
  func();
  for (int i = 0, j = n - 1; i < j; i++, j--) {
    swap(c[i], c[j]);
  }
  vector<int> ans;
  for (int i = 0; i < n; i++) {
    if (c[i]) ans.push_back(i + 1);
  }
  printf("%d\n", ans.size());
  for (int i = 0; i < ans.size(); i++) {
    printf("%d%c", ans[i], i == ans.size() - 1 ? '\n' : ' ');
  }
  return 0;
}
