#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 5;
long long a[N];
long long tree[N << 2];
void build(int i, int l, int r) {
  if (l == r) return void(tree[i] = 2 * a[l]);
  int mid = (l + r) >> 1;
  build(i << 1, l, mid);
  build(i << 1 | 1, mid + 1, r);
  tree[i] = min(tree[i << 1], tree[i << 1 | 1]);
}
int indx;
int target;
void get(int i, int l, int r, int a, int b) {
  if (l > b || r < a || indx != -1 || tree[i] >= target) return;
  if (l == r) {
    indx = l;
    return;
  }
  int mid = (l + r) >> 1;
  get(i << 1, l, mid, a, b);
  get(i << 1 | 1, mid + 1, r, a, b);
}
int ans[N];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  long long ma = 0, mn = 2e9;
  for (int i = 1; i <= n; i++)
    cin >> a[i], ma = max(ma, a[i]), mn = min(mn, a[i]);
  if (2 * mn >= ma) {
    for (int i = 1; i <= n; i++) cout << -1 << " ";
    return 0;
  }
  for (int i = n + 1; i <= 3 * n; i++) a[i] = a[i - n];
  build(1, 1, 3 * n);
  mn = 3 * n;
  for (int i = 3 * n; i >= 1; i--) {
    indx = -1;
    target = a[i];
    get(1, 1, 3 * n, i, 3 * n);
    if (indx == -1) indx = 3 * n;
    mn = min(mn, 1ll * indx);
    ans[i] = mn - i;
  }
  for (int i = 1; i <= n; i++) cout << ans[i] << " ";
  return 0;
}
