#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;
}
