Big Secret

Vitya has learned that the answer for The Ultimate Question of Life, the Universe, and Everything is not the integer 54 42, but an increasing integer sequence $a_1, \ldots, a_n$. In order to not reveal the secret earlier than needed, Vitya encrypted the answer and obtained the sequence $b_1, \ldots, b_n$ using the following rules:

  • $b_1 = a_1$;
  • $b_i = a_i \oplus a_{i – 1}$ for all $i$ from 2 to $n$, where $x \oplus y$ is the bitwise XOR of $x$ and $y$.

It is easy to see that the original sequence can be obtained using the rule $a_i = b_1 \oplus \ldots \oplus b_i$.

However, some time later Vitya discovered that the integers $b_i$ in the cypher got shuffled, and it can happen that when decrypted using the rule mentioned above, it can produce a sequence that is not increasing. In order to save his reputation in the scientific community, Vasya decided to find some permutation of integers $b_i$ so that the sequence $a_i = b_1 \oplus \ldots \oplus b_i$ is strictly increasing. Help him find such a permutation or determine that it is impossible.

Input

The first line contains a single integer $n$ ($1 \leq n \leq 10^5$).

The second line contains $n$ integers $b_1, \ldots, b_n$ ($1 \leq b_i < 2^{60}$).

Output

If there are no valid permutations, print a single line containing “No”.

Otherwise in the first line print the word “Yes”, and in the second line print integers $b’_1, \ldots, b’_n$ — a valid permutation of integers $b_i$. The unordered multisets $\{b_1, \ldots, b_n\}$ and $\{b’_1, \ldots, b’_n\}$ should be equal, i. e. for each integer $x$ the number of occurrences of $x$ in the first multiset should be equal to the number of occurrences of $x$ in the second multiset. Apart from this, the sequence $a_i = b’_1 \oplus \ldots \oplus b’_i$ should be strictly increasing.

If there are multiple answers, print any of them.

Examples

input

3
1 2 3

output

No

input

6
4 7 7 12 31 61

output

Yes
4 12 7 31 7 61

Note

In the first example no permutation is valid.

In the second example the given answer lead to the sequence $a_1 = 4$, $a_2 = 8$, $a_3 = 15$, $a_4 = 16$, $a_5 = 23$, $a_6 = 42$.

#include <bits/stdc++.h>

using namespace std;

int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
const int MAX = 62;
vector< vector<long long> > a(MAX);
for (int i = 0; i < n; i++) {
    long long foo;
    cin >> foo;
int highest = -1;
for (int j = MAX - 1; j >= 0; j--) {
if (foo & (1LL << j)) {
        highest = j;
        break;
      }
    }
    a[highest].push_back(foo);
  }
  vector<long long> res;
for (int j = MAX - 1; j >= 0; j--) {
if (a[j].empty()) {
continue;
}
vector<long long> new_res;
new_res.push_back(a[j].back());
a[j].pop_back();
for (long long foo : res) {
new_res.push_back(foo);
if (foo & (1LL << j)) {
        if (!a[j].empty()) {
          new_res.push_back(a[j].back());
          a[j].pop_back();
        }
      }
    }
    if (!a[j].empty()) {
      cout << "No" << '\n';
      return 0;
    }
    swap(res, new_res);
  }
  cout << "Yes" << '\n';
  for (int i = 0; i < n; i++) {
    if (i > 0) {
cout << ' ';
    }
    cout << res[i];
  }
  cout << '\n';
  return 0;
}