#include <bits/stdc++.h>
using namespace std;
long long n, x, k, z, m, pos, q, ans_v;
long long x1, p1, x2, p2;
long long b[600500], p[600500];
struct hyu {
  long long x;
  long long y;
  long long z;
  long long num;
};
long long a[500500];
long long mn[300500][20], mx[300500][20], pr[3005000];
long long find_min(long long l, long long r) {
  if (l > r) {
    return 1000000007;
  }
  long long p = pr[r - l + 1];
  return min(mn[l][p], mn[r - (1 << p) + 1][p]);
}
long long find_max(long long l, long long r) {
  long long p = pr[r - l + 1];
  return max(mx[l][p], mx[r - (1 << p) + 1][p]);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  for (int i = 0; i < 20; i++) {
    pr[(1 << i)] = i;
  }
  for (int i = 1; i < 1000000; i++) {
    pr[i] = max(pr[i], pr[i - 1]);
  }
  cin >> n;
  long long min1 = 1000000007, max1 = -1000000007;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    min1 = min(min1, a[i]);
    max1 = max(max1, a[i]);
  }
  if (min1 * 2 >= max1) {
    for (int i = 0; i < n; i++) {
      cout << -1 << " ";
    }
    return 0;
  }
  for (int i = 0; i < n; i++) {
    a[i + n] = a[i + 2 * n] = a[i];
  }
  n *= 3;
  for (int i = 0; i < n; i++) {
    mn[i][0] = a[i];
    mx[i][0] = a[i];
  }
  for (int j = 1; j < 20; j++) {
    for (int i = 0; i + (1 << j) <= n; i++) {
      mn[i][j] = min(mn[i][j - 1], mn[i + (1 << (j - 1))][j - 1]);
      mx[i][j] = max(mx[i][j - 1], mx[i + (1 << (j - 1))][j - 1]);
    }
  }
  for (int i = 0; i < n / 3; i++) {
    long long pos = i;
    while (true) {
      long long l = pos, r = n - 1;
      while (l < r) {
        long long mid = (l + r) / 2;
        long long min1 = find_min(pos + 1, mid);
        long long max1 = find_max(i, mid);
        if (min1 * 2 < max1) {
          r = mid;
        } else {
          l = mid + 1;
        }
      }
      if (pos + 1 == l) {
        cout << l - i << " ";
        break;
      }
      pos = l - 1;
    }
  }
  return 0;
}
