#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 100;
const int mod = 1e9 + 7;
const int INF = 0x3f3f3f3f;
const long long llINF = 0x3f3f3f3f3f3f3f3f;
inline bool read(long long &num) {
  char in;
  bool IsN = false;
  in = getchar();
  if (in == EOF) return false;
  while (in != '-' && (in < '0' || in > '9')) in = getchar();
  if (in == '-') {
    IsN = true;
    num = 0;
  } else
    num = in - '0';
  while (in = getchar(), in >= '0' && in <= '9') {
    num *= 10, num += in - '0';
  }
  if (IsN) num = -num;
  return true;
}
int a[N], b[N];
int lg2[N], tb[20][N];
void ST(int n) {
  lg2[0] = -1;
  for (int i = 1; i < N; i++) lg2[i] = lg2[i >> 1] + 1;
  for (int i = 1; i <= n; i++) tb[0][i] = a[i];
  for (int i = 1; i <= lg2[n]; i++)
    for (int j = 1; j + (1 << i) - 1 <= n; j++)
      tb[i][j] = max(tb[i - 1][j], tb[i - 1][j + (1 << i - 1)]);
}
int Ask(int l, int r) {
  int w = lg2[r - l + 1];
  return max(tb[w][l], tb[w][r - (1 << w) + 1]);
}
int main() {
  memset(b, 0x3f, sizeof(b));
  int n;
  cin >> n;
  for (int i = (1); i <= (n); i++) {
    scanf("%d", &a[i]);
    a[n + i] = a[n * 2 + i] = a[i];
  }
  ST(n * 3);
  for (int i = (1); i <= (3 * n); i++) {
    int l = 1, r = i - 1;
    while (l <= r) {
      int mid = l + r >> 1;
      if (Ask(mid, i) > a[i] * 2)
        l = mid + 1, b[mid] = min(b[mid], i);
      else
        r = mid - 1;
    }
  }
  for (int i = n * 3; i >= 1; --i) b[i] = min(b[i], b[i + 1]);
  for (int i = 1; i <= n; ++i)
    if (b[i] == INF)
      printf("-1 ");
    else
      printf("%d ", b[i] - i);
  puts("");
  return 0;
}
