#include <bits/stdc++.h>
using namespace std;
long long bigmod(long long b, long long p, long long md) {
  if (p == 0) return 1;
  if (p % 2 == 1) {
    return ((b % md) * bigmod(b, p - 1, md)) % md;
  } else {
    long long y = bigmod(b, p / 2, md);
    return (y * y) % md;
  }
}
long long ans[200005];
int main() {
  long long n;
  cin >> n;
  vector<long long> arr(n * 3);
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
    arr[n + i] = arr[2 * n + i] = arr[i];
  }
  ans[n - 1] = n - 1 + 2 * n;
  long long mx = arr[n - 1];
  for (int j = n; j < 3 * n; j++) {
    mx = max(arr[j], mx);
    if (2 * arr[j] < mx) {
      ans[n - 1] = j;
      break;
    }
  }
  long long B = 1;
  while (B < 3 * n) {
    B = B * 2;
  }
  vector<long long> tree(B * 2);
  for (int i = 0; i < 3 * n; i++) {
    tree[B + i] = arr[i];
  }
  for (int i = B - 1; i >= 0; i--) {
    tree[i] = min(tree[2 * i], tree[2 * i + 1]);
  }
  for (int j = n - 2; j >= 0; j--) {
    ans[j] = min(ans[j + 1], j + 2 * n);
    int i = B + j;
    int value = (arr[j] + 1) / 2;
    while (i >= 2) {
      if (i % 2 == 0 && tree[i + 1] < value) {
        i++;
        while (i < B) {
          if (tree[2 * i] < value)
            i = 2 * i;
          else
            i = 2 * i + 1;
        }
        ans[j] = min(ans[j], i - B);
        break;
      }
      i = i / 2;
    }
  }
  for (int i = 0; i < n; i++) {
    if (ans[i] == i + 2 * n)
      cout << "-1 ";
    else
      cout << ans[i] - i << " ";
  }
  cout << "\n";
  return 0;
}
