#include<bits/stdc++.h>
using namespace std;

#ifndef ONLINE_JUDGE
    #include "template.cpp"
#else
    #define debug(...)
    #define debugArr(a, n)
#endif

#define io ios_base::sync_with_stdio(false); cin.tie(NULL); 
#define endl '\n'

void Wah() {
    io;
    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
        // freopen("output.txt","w",stdout);
    #endif
}

typedef vector<long long> vll;
typedef long double ld;
#define int long long
#define ll int
typedef pair<int,int> pii;





const int N = ( 1 << 24 );
pair<int,int> dp[N];
void senritsu() {   
    
    int n; cin >> n;
    int a[n]; for ( int i = 0; i < n; i++ ) cin >> a[i];

    for ( int i = 0; i < N; i++ ) dp[i] = {INT_MAX, INT_MIN};
    for ( int i = 0; i < n; i++ ) dp[a[i]] = {i,i}; 
 
    for ( int i = 0; i < 24; i++ ){
        for ( int mask = 0; mask < N; mask++ ){
            if ( (mask & (1<<i)) != 0 ){
                dp[mask] = {
                    min(dp[mask].first, dp[mask^(1<<i)].first),
                    max(dp[mask].second, dp[mask^(1<<i)].second),
                };
            } 
        }
    }

    int mask = N - 1;
    for ( int i = 0; i < n; i++ ){

        int f, s;
        int x = ( mask ^ a[i] );

        f = dp[x].first;
        s = dp[x].second;

        if ( f != i && f >= 0 && f < n ){
            cout << a[f] << ' ';
            continue;
        }
        if ( s != i && s >= 0 && s < n ){
            cout << a[s] << ' ';
            continue;
        }

        cout << -1 << ' ';

    }

}

signed main() {
    // 君は分かってるかな 教えてくれた 戻らないその幸せは
    Wah();
    int tt = 1;
    // cin >> tt;
    int i = 1;
    while ( tt-- > 0 ) {
        // cout << "Case " << i++ << ": ";
        senritsu();
    }
    return 0;
}