func_code_string: #include <bits/stdc++.h>   using std::cerr;   using std::cin;   using std::cout;   using std::deque;   using std::endl;   using std::fixed;   using std::ios_base;   using std::list;   using std::make_pair;   using std::make_tuple;   using std::map;   using std::nth_element;   using std::pair;   using std::queue;   using std::reverse;   using std::set;   using std::sort;   using std::stack;   using std::string;   using std::tuple;   using std::unordered_map;   using std::unordered_set;   using std::vector;   const int MAXN = 100000;   const int INF = 1e9;   const int MOD = 1e9 + 7;   const int64_t L_INF = 4e18;   int n;   vector<int64_t> numbers[64];   list<int64_t> ans;   int get_top(int64_t num) {     for (int i = 62; i >= 0; i--) {       if (num & (1ll << i)) {         return i;       }     }     return -1;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(nullptr);     cout.precision(10);     cout << fixed;     cin >> n;     for (int i = 0; i < n; i++) {       int64_t b;       cin >> b;       numbers[get_top(b)].push_back(b);     }     for (int i = 62; i >= 0; i--) {       if (numbers[i].empty()) {         continue;       }       if (numbers[i].size() > ans.size() + 1) {         cout <<  No n ;         exit(0);       }       auto iter = ans.begin();       iter = ans.insert(iter, numbers[i][0]);       iter++;       int j = 1;       int64_t sum = numbers[i][0];       while (j < (int)numbers[i].size() && iter != ans.end()) {         sum ^= *iter;         iter++;         if ((sum ^ numbers[i][j]) > sum) {           iter = ans.insert(iter, numbers[i][j]);           sum ^= *iter;           iter++;           j++;         }       }       if (j != (int)numbers[i].size()) {         cout <<  No n ;         exit(0);       }     }     cout <<  Yes n ;     for (int64_t b : ans) {       cout << b <<    ;     }     return 0;   }   