func_code_string: #include <bits/stdc++.h>   using namespace std;   int main() {     cin.tie(nullptr);     ios::sync_with_stdio(false);     int n;     cin >> n;     vector<int> a(n);     set<int> s;     int g = 0;     for (int i = 0; i < n; i++) {       cin >> a[i];       g ^= a[i];       s.insert(a[i]);     }     if (n == 3) {       printf( YES n );       printf( 1 n );       printf( 1 2 3 n );       return 0;     }     if (n % 2 == 0 and g > 0) {       printf( NO n );       return 0;     }     if (n % 2 == 0) {       printf( YES n );       vector<pair<int, pair<int, int>>> v;       for (int i = 1;; i += 2) {         if (i + 2 > n) break;         v.push_back(make_pair(i, make_pair(i + 1, i + 2)));       }       for (int i = 1;; i += 2) {         if (i + 3 == n) break;         v.push_back(make_pair(i, make_pair(i + 1, n)));       }       printf( %d n , v.size());       for (auto p : v) {         printf( %d %d %d n , p.first, p.second.first, p.second.second);       }       return 0;     } else {       printf( YES n );       vector<pair<int, pair<int, int>>> v;       for (int i = 1;; i += 2) {         if (i + 2 > n) break;         v.push_back(make_pair(i, make_pair(i + 1, i + 2)));       }       for (int i = 1;; i += 2) {         if (i + 2 == n) break;         v.push_back(make_pair(i, make_pair(i + 1, n)));       }       printf( %d n , v.size());       for (auto p : v) {         printf( %d %d %d n , p.first, p.second.first, p.second.second);       }       return 0;     }   }   