#include <bits/stdc++.h>
using namespace std;
template <class T>
int size(const T &a) {
  return int(a.size());
}
template <class T>
T sqr(const T &a) {
  return a * a;
}
const int max_n = 100000;
int d[max_n];
int a[max_n];
int sa[max_n];
int sd[max_n];
int b[max_n];
bool g[max_n];
int cto[max_n];
void solve(int n) {
  for (int i = 0; i < n; i++) {
    cto[i] = 0;
  }
  cto[n - 1] = n;
  for (int i = n - 1, k = 0, f = 0; k < n; k++) {
    int j = (i + k) % n;
    f += a[j] - d[j];
    if (f < 0) {
      cto[i] = k;
      break;
    }
  }
  sa[0] = a[0];
  sd[0] = d[0];
  for (int i = 1; i < n; i++) {
    sa[i] = sa[i - 1] + a[i];
    sd[i] = sd[i - 1] + d[i];
  }
  for (int i = n - 2; i >= 0; i--) {
    for (int j, f = 0, k = 0;;) {
      j = (i + k) % n;
      k += cto[j];
      j = (i + k) % n;
      if (j >= i) {
        f = sa[j] - sa[i] + a[i];
        f -= sd[j] - sd[i] + d[i];
      } else {
        f = sa[n - 1] + sa[j] - sa[i] + a[i];
        f -= sd[n - 1] + sd[j] - sd[i] + d[i];
      }
      if (f < 0 || k >= n) {
        cto[i] = k;
        break;
      } else {
        k++;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    if (cto[i] >= n) {
      g[i] = 1;
    }
  }
}
int main() {
  int n;
  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]);
    d[i] = b[i];
  }
  solve(n);
  for (int i = 0; i < n; i++) {
    d[i] = (i ? b[i - 1] : b[n - 1]);
  }
  reverse(d, d + n);
  reverse(a, a + n);
  reverse(g, g + n);
  solve(n);
  reverse(g, g + n);
  int m = 0;
  for (int i = 0; i < n; i++) {
    if (g[i]) m++;
  }
  printf("%d\n", m);
  for (int i = 0; i < n; i++) {
    if (g[i]) {
      m--;
      printf("%d", i + 1);
      if (m) {
        printf(" ");
      }
    }
  }
  printf("\n");
  return 0;
}
