#include <bits/stdc++.h>   const int MAXN = 1e5 + 5;   long long ans[MAXN], b[MAXN];   int n, first[65], cnt_ans;   bool selected[MAXN];   int main() {     scanf( %d , &n);     for (int i = 0; i < n; i++) scanf( %lld , &b[i]);     std::sort(b, b + n);     memset(first, 0xff, sizeof(first));     for (int i = 0; i < n; i++) {       for (int j = 60; j >= 0; j--) {         if (b[i] >> j & 1) {           if (first[j] == -1) first[j] = i;           break;         }       }     }     long long cur = 0;     bool flag = true;     for (int i = 0; i < n; i++) {       int j;       for (j = 0; j <= 60; j++)         if (!(cur >> j & 1)) {           if (first[j] != -1 && !selected[first[j]]) {             selected[first[j]] = true;             cur ^= b[first[j]];             ans[cnt_ans++] = b[first[j]++];             if (!(b[first[j]] >> j)) first[j] = -1;             break;           }         }       if (j == 61) {         flag = false;         break;       }     }     if (flag) {       printf( Yes n );       for (int i = 0; i < n; i++) printf( %lld  , ans[i]);       printf(  n );     } else {       printf( No n );     }     return 0;   }   