#include <bits/stdc++.h>
using namespace std;
set<long long> s;
long long n;
void solve1(vector<long long> p, vector<long long> d) {
  vector<long long> lg(2 * n + 1);
  lg[1] = 0;
  for (long long i = 2; i <= 2 * n; i++) lg[i] = lg[i >> 1] + 1;
  vector<vector<long long>> st(2 * n + 1, vector<long long>(21));
  for (long long i = 1; i <= (n << 1); i++)
    p[i] += p[i - 1], d[i] += d[i - 1], st[i][0] = p[i] - d[i];
  for (long long i = (n << 1); i >= 1; i--)
    for (long long j = 1; i + (1ll << j) - 1 <= (n << 1); j++)
      st[i][j] = min(st[i][j - 1], st[i + (1ll << (j - 1))][j - 1]);
  auto query = [&](long long l, long long r) {
    long long k = lg[r - l + 1];
    return min(st[l][k], st[r - (1ll << k) + 1][k]);
  };
  for (long long i = 1; i <= n; i++) {
    if (query(i, i + n - 1) >= p[i - 1] - d[i - 1]) s.insert(i);
  }
}
void solve2(vector<long long> p, vector<long long> d) {
  reverse(p.begin(), p.end());
  reverse(d.begin(), d.end());
  vector<long long> d2(2 * n + 2);
  for (long long i = 1; i <= n; i++) d2[i] = d2[i + n] = d[i + 1];
  solve1(p, d2);
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  vector<long long> d(2 * n + 2), p(2 * n + 2);
  for (long long i = 1; i <= n; i++) cin >> p[i], p[i + n] = p[i];
  for (long long i = 1; i <= n; i++) cin >> d[i], d[i + n] = d[i];
  solve1(p, d);
  set<long long> ans;
  for (auto x : s) ans.insert(x);
  s.clear();
  solve2(p, d);
  for (auto x : s) ans.insert(n - x + 1);
  cout << ans.size() << '\n';
  for (auto x : ans) {
    cout << x << " ";
  }
  cout << '\n';
}
