#include <bits/stdc++.h>
using namespace std;
const int M = 1000000007;
const int MM = 998244353;
template <typename T, typename U>
static inline void amin(T &x, U y) {
  if (y < x) x = y;
}
template <typename T, typename U>
static inline void amax(T &x, U y) {
  if (x < y) x = y;
}
int _runtimeTerror_() {
  int n;
  cin >> n;
  vector<long long> a(n + 1), b(n + 1), c(n);
  iota(c.begin(), c.end(), 1);
  for (int i = 1; i <= n; ++i) cin >> a[i];
  for (int i = 1; i <= n; ++i) cin >> b[i];
  sort(c.begin(), c.end(), [&](int x, int y) { return a[x] < a[y]; });
  auto good = [&](vector<int> &ans) {
    long long A = 0, B = 0;
    for (int i = 1; i <= n; ++i) A += a[i], B += b[i];
    for (int i : ans) A -= 2 * a[i], B -= 2 * b[i];
    return A < 0 && B < 0;
  };
  vector<int> ans;
  for (int i = 0; i < n; i += 2) ans.push_back(c[i]);
  if (n % 2 == 0) ans.push_back(c.back());
  if (good(ans)) {
    cout << (long long)ans.size() << "\n";
    for (auto &j : ans) cout << j << " ";
    cout << "\n";
    return 0;
  }
  ans.clear();
  for (int i = 1; i < n; i += 2) ans.push_back(c[i]);
  if (n % 2 == 0)
    ans.push_back(c[0]);
  else
    ans.push_back(c.back());
  assert(good(ans));
  cout << (long long)ans.size() << "\n";
  for (auto &j : ans) cout << j << " ";
  cout << "\n";
  return 0;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int TESTS = 1;
  while (TESTS--) _runtimeTerror_();
  return 0;
}
