#include <bits/stdc++.h>
using namespace std;
vector<string> split(const string &s, char c) {
  vector<string> v;
  stringstream second(s);
  string x;
  while (getline(second, x, c)) v.emplace_back(x);
  return move(v);
}
void err(vector<string>::iterator it) {}
template <typename T, typename... Args>
void err(vector<string>::iterator it, T a, Args... args) {
  cout << it->substr((*it)[0] == ' ', it->length()) << " = " << a << ", ";
  err(++it, args...);
}
int ini() {
  int x;
  scanf("%d", &x);
  return x;
}
long long inl() {
  long long x;
  scanf("%lld", &x);
  return x;
}
double ind() {
  double x;
  scanf("%lf", &x);
  return x;
}
int set_1(int n, int pos) { return n = (n | (1 << pos)); }
int reset_0(int n, int pos) { return n = n & ~(1 << pos); }
bool check_bit(int n, int pos) { return n = n & (1 << pos); }
int dx[8] = {1, 0, -1, 0, -1, -1, 1, 1};
int dy[8] = {0, 1, 0, -1, -1, 1, -1, 1};
const int N = (int)1e6 + 5;
const int M = (int)1e9 + 7;
const double pi = 2 * acos(0.0);
const double eps = 1e-9;
int a[3 * N], res[N], tree[12 * N];
void build(int in, int b, int e) {
  if (b == e) {
    tree[in] = a[b];
    return;
  }
  int mid = (b + e) >> 1;
  int p = in << 1;
  build(p, b, mid);
  build(p + 1, mid + 1, e);
  tree[in] = max(tree[p], tree[p + 1]);
}
long long query(int in, int b, int e, int l, int r) {
  if (b > r or e < l) return 0ll;
  if (b >= l and e <= r) {
    return tree[in];
  }
  int mid = (b + e) >> 1;
  int p = in << 1;
  int x = query(p, b, mid, l, r);
  int y = query(p + 1, mid + 1, e, l, r);
  return max(x, y);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int t = 1, te = 0;
  while (t--) {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];
    for (int i = n + 1; i <= 3 * n; i++) {
      a[i] = a[i - n];
    }
    int r = 1, l;
    deque<pair<int, int> > dq;
    int ma = -1;
    for (l = 1; l <= n; l++) {
      if (r <= l) {
        r = l;
        ma = -1;
      }
      if (!dq.empty()) {
        ma = dq.front().first;
      }
      while (r <= 3 * n and a[r] * 2 >= ma) {
        while (!dq.empty() and dq.back().first <= a[r]) dq.pop_back();
        dq.push_back({a[r], r});
        ma = dq.front().first;
        ++r;
      }
      int c = r - l;
      res[l] = c >= 2 * n ? -1 : c;
      if (dq.front().second == l) {
        dq.pop_front();
      }
    }
    for (int i = 1; i <= n; i++) {
      cout << res[i] << " ";
    }
  }
  return 0;
}
