#include <bits/stdc++.h>
using namespace std;
int n;
int a[1000007];
int dp[4200007];
int main() {
  scanf("%d", &n);
  memset(dp, -1, sizeof dp);
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
    dp[a[i]] = a[i];
  }
  for (int i = 0; i < 22; i++)
    for (int j = 0; j < (1 << 22); j++)
      if (j & (1 << i)) dp[j] = max(dp[j], dp[j ^ (1 << i)]);
  for (int i = 0; i < n; i++) printf("%d ", dp[(((1 << 22) - 1) ^ a[i])]);
  return 0;
}
