#include <bits/stdc++.h>
using namespace std;
long long int n, a[100005], sum[50], cnt, an = -1, lol[100005], b[100005];
map<long long int, long long int> mp;
long long int binlo(long long int num) {
  long long int lo = 0, hi = n + 1, mid, tmp;
  while (lo <= hi) {
    mid = (lo + hi) >> 1;
    if (a[mid] < num)
      tmp = mid, lo = mid + 1;
    else
      hi = mid - 1;
  }
  return tmp;
}
long long int binup(long long int num) {
  long long int lo = 0, hi = n + 1, mid, tmp;
  while (lo <= hi) {
    mid = (lo + hi) >> 1;
    if (a[mid] > num)
      tmp = mid, hi = mid - 1;
    else
      lo = mid + 1;
  }
  return tmp;
}
bool check(long long int num) {
  long long int now = 1;
  memset(lol, false, sizeof(lol));
  lol[n + 1] = true, b[n + 1] = 0;
  for (long long int i = 1; i <= cnt; i++) {
    if (sum[i] > num)
      b[i] = num;
    else
      b[i] = sum[i];
  }
  long long int lef, ri, k;
  for (long long int i = 1; i <= cnt; i++) {
    lef = binlo(1LL << (i - 1)) + 1, ri = binup(1LL << (i - 1)), k = b[i];
    while (lef < ri && k) {
      if (!lol[lef]) k--, lol[lef] = true;
      lef++;
    }
    if (b[i] > b[i + 1]) {
      ri = binup(1LL << i), k = b[i];
      while (k > b[i + 1] && now < ri) {
        if (!lol[now]) k--, lol[now] = true;
        now++;
      }
    }
  }
  for (long long int i = 1; i <= n; i++) {
    if (!lol[i]) return false;
  }
  return true;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  scanf("%lld", &n);
  for (long long int i = 1; i <= n; i++) {
    scanf("%lld", &a[i]);
    mp[a[i]]++;
  }
  sum[0] = 1000000007, a[0] = 0, a[n + 1] = (1LL << 45);
  for (long long int i = 1; i <= 40; i++) {
    sum[i] = min(sum[i - 1], mp[1LL << (i - 1)]);
    if (mp[1LL << (i - 1)] && sum[i] == 0) {
      printf("-1\n");
      return 0;
    }
    if (sum[i]) cnt = i;
  }
  long long int lo = 1, hi = sum[1], mid, tmp;
  while (lo <= hi) {
    mid = (lo + hi) >> 1;
    if (check(mid))
      an = mid, hi = mid - 1;
    else
      lo = mid + 1;
  }
  if (an == -1)
    printf("%lld\n", an);
  else
    for (long long int i = an; i <= sum[1]; i++) printf("%lld ", i);
  return 0;
}
