#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
const double pi = acos(-1.0), eps = 1e-6;
void File() {
  freopen("D:\\in.txt", "r", stdin);
  freopen("D:\\out.txt", "w", stdout);
}
template <class T>
inline void read(T &x) {
  char c = getchar();
  x = 0;
  while (!isdigit(c)) c = getchar();
  while (isdigit(c)) {
    x = x * 10 + c - '0';
    c = getchar();
  }
}
priority_queue<int> q;
map<int, bool> m;
int n;
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    int x;
    scanf("%d", &x);
    q.push(x);
    m[x] = 1;
  }
  while (1) {
    int top = q.top();
    while (1) {
      if (top == 0) break;
      if (m[top])
        top = top / 2;
      else
        break;
    }
    if (top == 0) break;
    q.pop();
    m[top] = 1;
    q.push(top);
  }
  while (!q.empty()) {
    printf("%d ", q.top());
    q.pop();
  }
  return 0;
}
