#include <bits/stdc++.h>
using namespace std;
int maxs[300005][24];
int arr[300005];
int a[300005];
int c[300005];
void buildrmq(int n) {
  int tem = (int)floor(log2((double)n));
  for (int i = 1; i <= n; i++) maxs[i][0] = arr[i];
  for (int j = 1; j <= tem; j++)
    for (int i = 1; i + (1 << j) - 1 <= n; i++)
      maxs[i][j] = max(maxs[i][j - 1], maxs[i + (1 << (j - 1))][j - 1]);
}
int queryrmq(int a, int b) {
  int k = log2(b - a + 1);
  return max(maxs[a][k], maxs[b - (1 << k) + 1][k]);
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= n; i++) arr[i] = arr[i + n] = arr[i + 2 * n] = a[i];
  for (int i = 1; i <= 3 * n; i++) c[i] = 1e9;
  buildrmq(3 * n);
  int sign = 0;
  for (int i = 3 * n; i >= 1; i--) {
    int r = i - 1;
    int l = 1, ans = -1;
    while (l <= r) {
      int mid = (l + r) >> 1;
      if (queryrmq(mid, i - 1) > 2 * arr[i]) {
        l = mid + 1;
        ans = mid;
      } else {
        r = mid - 1;
      }
    }
    if (ans == -1) {
      continue;
    } else {
      c[ans] = min(c[ans], i - ans);
    }
  }
  c[3 * n + 1] = 1e9;
  for (int i = 3 * n; i >= 1; i--) c[i] = min(c[i], c[i + 1] + 1);
  for (int i = 1; i <= n; i++)
    if (c[i] == 1e9) c[i] = -1;
  for (int i = 1; i <= n; i++) cout << c[i] << " ";
  cout << endl;
  return 0;
}
