#include <bits/stdc++.h>
using namespace std;
inline int mod(int n, int m) {
  int ret = n % m;
  if (ret < 0) ret += m;
  return ret;
}
int gcd(int a, int b) { return (b == 0 ? a : gcd(b, a % b)); }
int exp(int a, int b, int m) {
  if (b == 0) return 1;
  if (b == 1) return mod(a, m);
  int k = mod(exp(a, b / 2, m), m);
  if (b & 1) {
    return mod(a * mod(k * k, m), m);
  } else
    return mod(k * k, m);
}
int n;
int a[200100];
int res[200100];
struct node {
  int mx, mn;
};
node tree[200100 * 4];
node merge(node a, node b) {
  node c;
  c.mx = max(a.mx, b.mx);
  c.mn = min(a.mn, b.mn);
  return c;
}
void build(int no, int i, int j) {
  if (i == j) {
    tree[no].mn = tree[no].mx = a[i];
  } else {
    int m = (i + j) / 2;
    int l = 2 * no, r = 2 * no + 1;
    build(l, i, m);
    build(r, m + 1, j);
    tree[no] = merge(tree[l], tree[r]);
  }
}
int maior(int no, int i, int j, int L, int val) {
  if (i > j || j < L) return 1e9;
  if (tree[no].mx < val) return 1e9;
  if (i == j) return i;
  int m = (i + j) / 2;
  int l = 2 * no, r = 2 * no + 1;
  if (i < L) {
    return min(maior(l, i, m, L, val), maior(r, m + 1, j, L, val));
  }
  if (tree[l].mx >= val) return maior(l, i, m, L, val);
  return maior(r, m + 1, j, L, val);
}
int menor(int no, int i, int j, int L, int R, int val) {
  if (i > j || j < L || i > R) return 1e9 + 10;
  if (tree[no].mn * 2 >= val) return 1e9 + 10;
  if (i == j) return i;
  int m = (i + j) / 2;
  int l = 2 * no, r = 2 * no + 1;
  if (i < L || j > R) {
    return min(menor(l, i, m, L, R, val), menor(r, m + 1, j, L, R, val));
  }
  if (tree[l].mn * 2 < val) return menor(l, i, m, L, R, val);
  return menor(r, m + 1, j, L, R, val);
}
int dp[200100];
int solve(int x) {
  if (dp[x] != -1) return dp[x];
  if (x > n) return 0;
  int &y = dp[x];
  y = 1e9;
  int nxt = maior(1, 0, 2 * n - 1, x + 1, a[x]);
  if (nxt >= 2 * n) return 1e9;
  int mn = menor(1, 0, 2 * n - 1, x + 1, nxt, a[x]);
  if (x <= mn && mn < nxt) {
    return dp[x + n] = y = mn - x;
  }
  return dp[x + n] = y = solve(nxt) + nxt - x;
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  memset(dp, -1, sizeof(dp));
  cin >> n;
  int mx = 0, mn = 1e9;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    a[i + n] = a[i];
    mx = max(mx, a[i]);
    mn = min(mn, a[i]);
  }
  if (2 * mn >= mx) {
    for (int i = 1; i <= n; i++) cout << -1 << " ";
    cout << "\n";
    return 0;
  }
  build(1, 0, 2 * n - 1);
  for (int i = 0; i < n; i++) {
    cout << solve(i) << " ";
  }
}
