#include <bits/stdc++.h>
using namespace std;
int n, n3, a[400005], mx, p, ct, ans[100005], mn, curmx, mxpl, pp;
bool all = true;
int tr[1600005], tr2[1600005];
void build(int p, int l, int r) {
  if (l == r) {
    tr[p] = tr2[p] = a[l];
    return;
  }
  build(p * 2, l, (l + r) / 2);
  build(p * 2 + 1, (l + r) / 2 + 1, r);
  tr[p] = min(tr[p * 2], tr[p * 2 + 1]);
  tr2[p] = max(tr2[p * 2], tr2[p * 2 + 1]);
  return;
}
void f(int p, int l, int r, int first, int second, int tar) {
  if (first > r || second < l) return;
  if (tr[p] * 2 >= tar) return;
  if (l == r) {
    mn = min(mn, l);
    return;
  }
  if (first > (l + r) / 2) {
    f(p * 2 + 1, (l + r) / 2 + 1, r, first, second, tar);
    return;
  }
  if (second <= (l + r) / 2) {
    f(p * 2, l, (l + r) / 2, first, second, tar);
    return;
  }
  if (first <= l && tr[p * 2] * 2 < tar) {
    f(p * 2, l, (l + r) / 2, first, second, tar);
    return;
  }
  if (first <= l && second >= r) {
    if (tr[p * 2] * 2 < tar)
      f(p * 2, l, (l + r) / 2, first, second, tar);
    else
      f(p * 2 + 1, (l + r) / 2 + 1, r, first, second, tar);
    return;
  }
  f(p * 2, l, (l + r) / 2, first, second, tar);
  f(p * 2 + 1, (l + r) / 2 + 1, r, first, second, tar);
  return;
}
void g(int p, int l, int r, int first, int second, int tar) {
  if (first > r || second < l) return;
  if (tr2[p] < tar) return;
  if (l == r) {
    mn = min(mn, l);
    return;
  }
  if (first > (l + r) / 2) {
    g(p * 2 + 1, (l + r) / 2 + 1, r, first, second, tar);
    return;
  }
  if (second <= (l + r) / 2) {
    g(p * 2, l, (l + r) / 2, first, second, tar);
    return;
  }
  if (first <= l && tr2[p * 2] >= tar) {
    g(p * 2, l, (l + r) / 2, first, second, tar);
    return;
  }
  if (first <= l && second >= r) {
    if (tr2[p * 2] >= tar)
      g(p * 2, l, (l + r) / 2, first, second, tar);
    else
      g(p * 2 + 1, (l + r) / 2 + 1, r, first, second, tar);
  }
  g(p * 2, l, (l + r) / 2, first, second, tar);
  g(p * 2 + 1, (l + r) / 2 + 1, r, first, second, tar);
  return;
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
    a[i + n] = a[i + 2 * n] = a[i + 3 * n] = a[i];
    mx = max(mx, a[i]);
  }
  for (int i = 1; i <= n; i++) {
    if (a[i] * 2 < mx) all = false;
    if (a[i] == mx) pp = i;
  }
  if (all) {
    for (int i = 1; i <= n; i++) {
      printf("-1 ");
    }
    return 0;
  }
  n3 = 4 * n;
  build(1, 1, n3);
  mn = ((1e+9) + 7);
  p = pp;
  curmx = a[pp];
  mxpl = pp;
  ct = 1;
  while (true) {
    p++;
    if (p > n) p = 1;
    if (curmx < a[p]) {
      curmx = a[p];
    }
    if (a[p] * 2 < curmx) break;
    ct++;
  }
  ans[pp] = ct;
  for (int i = pp - 1; i > 0; i--) {
    mn = ((1e+9) + 7);
    g(1, 1, n3, i + 1, n3, a[i]);
    mxpl = mn;
    mn = ((1e+9) + 7);
    f(1, 1, n3, i + 1, mxpl, a[i]);
    if (mn == ((1e+9) + 7)) {
      ans[i] = mxpl - i;
      while (mxpl > n) mxpl -= n;
      ans[i] += ans[mxpl];
    } else {
      ans[i] = (mn - i);
    }
  }
  for (int i = n; i > pp; i--) {
    mn = ((1e+9) + 7);
    g(1, 1, n3, i + 1, n3, a[i]);
    mxpl = mn;
    mn = ((1e+9) + 7);
    f(1, 1, n3, i + 1, mxpl, a[i]);
    if (mn == ((1e+9) + 7)) {
      ans[i] = mxpl - i;
      while (mxpl > n) mxpl -= n;
      ans[i] += ans[mxpl];
    } else {
      ans[i] = (mn - i);
    }
  }
  for (int i = 1; i <= n; i++) {
    printf("%d ", ans[i]);
  }
  return 0;
}
