#include <bits/stdc++.h>
using namespace std;
int n;
int a[1000005];
int d[2][4195000], w[2][4195000];
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &a[i]);
    ++d[0][a[i]];
    w[0][a[i]] = a[i];
  }
  int p = (1 << 22) - 1;
  for (int i = 1; i <= 22; ++i) {
    int l = i & 1;
    int bit = (1 << (i - 1));
    for (int mask = 0; mask <= p; ++mask) {
      d[l][mask] = d[1 - l][mask];
      w[l][mask] = 0;
      if (w[1 - l][mask]) w[l][mask] = w[1 - l][mask];
      if (mask & bit) {
        d[l][mask] += d[1 - l][mask ^ bit];
        if (w[1 - l][mask ^ bit]) w[l][mask] = w[1 - l][mask ^ bit];
      }
    }
  }
  for (int i = 1; i <= n; ++i) {
    int rmask = (1 << 22) - 1 - a[i];
    if (d[0][rmask] == 0)
      printf("-1 ");
    else
      printf("%d ", w[0][rmask]);
  }
  return 0;
}
