#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> roads;
vector<int> stations;
void calculate(set<int>& possible_stations, bool flag) {
  vector<int> corrections;
  corrections.resize(n);
  corrections[0] = 0;
  for (int i = 1; i < n; i++) {
    corrections[i] = corrections[i - 1] - roads[i - 1] + stations[i - 1];
  }
  int min = corrections[0];
  for (int i = 1; i < n; i++) {
    if (corrections[i] < min) {
      min = corrections[i];
    }
  }
  for (int i = 0; i < n; i++) {
    if (corrections[i] == min) {
      if (flag) {
        possible_stations.insert(i);
      } else {
        if (i == 0) {
          possible_stations.insert(i);
        } else {
          possible_stations.insert(n - i);
        }
      }
    }
  }
}
void reverseRoads() {
  int size = roads.size();
  vector<int> temp;
  for (int i = size - 1; i >= 0; i--) {
    temp.push_back(roads[i]);
  }
  roads = temp;
}
void reverseStations() {
  int size = stations.size();
  vector<int> temp;
  temp.push_back(stations[0]);
  for (int i = size - 1; i >= 1; i--) {
    temp.push_back(stations[i]);
  }
  stations = temp;
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) {
    int temp;
    cin >> temp;
    stations.push_back(temp);
  }
  for (int i = 0; i < n; i++) {
    int temp;
    cin >> temp;
    roads.push_back(temp);
  }
  set<int> right;
  calculate(right, true);
  reverseRoads();
  reverseStations();
  set<int> left;
  calculate(left, false);
  vector<int> result;
  set_union(right.begin(), right.end(), left.begin(), left.end(),
            inserter(result, result.begin()));
  int size = result.size();
  cout << size << endl;
  for (int i = 0; i < size; i++) {
    cout << result[i] + 1 << " ";
  }
  cout << endl;
  return 0;
}
