#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
long long qpow(long long a, long long b, long long m) {
  long long r = 1;
  a %= m;
  for (; b; b >>= 1) {
    if (b & 1) r = r * a % m;
    a = a * a % m;
  }
  return r;
}
const int inf = 0x7fffffff;
const int maxn = 1e5 + 10;
int a[maxn << 2], mx[maxn << 2][30];
int Log[maxn << 2], c[maxn << 2];
int n;
void init() {
  Log[0] = -1;
  for (int i = 1; i <= 3 * n; i++) Log[i] = Log[i / 2] + 1;
  for (int j = 1; (1 << j) <= 3 * n; j++) {
    for (int i = 1; i + (1 << j) - 1 <= 3 * n; i++) {
      mx[i][j] = max(mx[i][j - 1], mx[i + (1 << (j - 1))][j - 1]);
    }
  }
}
int qmax(int l, int r) {
  int x = Log[r - l + 1];
  return max(mx[l][x], mx[r - (1 << x) + 1][x]);
}
int query(int L, int R, int x) {
  int l = L, r = R, res = -1;
  while (l <= r) {
    int mid = (l + r) >> 1;
    if (qmax(mid, r) > x) {
      res = mid;
      l = mid + 1;
    } else
      r = mid - 1;
  }
  return res;
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  int mxx = 0, mii = inf;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
    mxx = max(mxx, a[i]);
    mii = min(mii, a[i]);
    a[i + n] = a[i + 2 * n] = a[i];
  }
  if (mxx <= mii * 2) {
    for (int i = 1; i <= n; i++) {
      if (i != 1) cout << " ";
      cout << -1;
    }
    cout << endl;
    return 0;
  }
  for (int i = 1; i <= 3 * n; i++) {
    mx[i][0] = a[i];
    c[i] = inf;
  }
  init();
  for (int i = 1; i <= 3 * n; i++) {
    int pos = query(1, i - 1, a[i] * 2);
    if (pos == -1) continue;
    c[pos] = min(c[pos], i);
  }
  for (int i = 3 * n - 1; i >= 1; i--) c[i] = min(c[i], c[i + 1]);
  for (int i = 1; i <= n; i++) {
    if (i != 1) cout << " ";
    cout << min(min(c[i] - i, c[i + n] - i - n), c[i + 2 * n] - i - 2 * n);
  }
  cout << endl;
  return 0;
}
