func_code_string: #include <bits/stdc++.h>   using namespace std;   bool pr[10000005] = {false};   vector<long long> prime;   void prim() {     pr[0] = true;     pr[1] = true;     for (long long i = 2; i <= sqrt(100005); i++) {       for (long long j = i * 2; j <= sqrt(100005); j += i) {         pr[j] = true;       }     }   }   vector<long long> divisor(long long n) {     vector<long long> div;     div.push_back(n);     for (long long i = 2; i * i <= n; i++) {       if (n % i == 0) {         div.push_back(i);         if (n / i != i) div.push_back(n / i);       }     }     sort(div.begin(), div.end());     return div;   }   long long modInverse(long long a, long long m) {     long long m0 = m;     long long y = 0, x = 1;     if (m == 1) return 0;     while (a > 1) {       long long q = a / m;       long long t = m;       m = a % m, a = t;       t = y;       y = x - q * y;       x = t;     }     if (x < 0) x += m0;     return x;   }   long long find(long long n) {     long long count = 0;     while (n) {       count++;       n = n / 2;     }     return count;   }   void solve() {     long long n;     cin >> n;     long long arr[n];     for (long long i = 0; i < (long long)n; i++) cin >> arr[i];     vector<vector<long long>> ans;     if (n % 2 == 0) {       long long ans1 = 0;       for (long long i = 0; i < n; i++) {         ans1 = ans1 ^ arr[i];       }       if (ans1 != 0) {         cout <<  NO n ;         return;       } else {         cout <<  YES n ;         for (long long i = 0; i < n - 2; i += 2) {           ans.push_back({i + 1, i + 2, i + 3});         }         for (long long i = 0; i < n - 2; i += 2) {           ans.push_back({i + 1, i + 2, n});         }         ans.push_back({n - 2, n - 1, n});         cout << ans.size() <<   n ;         for (long long i = 0; i < (long long)ans.size(); i++) {           cout << ans[i][0] <<     << ans[i][1] <<     << ans[i][2] <<   n ;         }         return;       }     }     cout <<  YES n ;     for (long long i = 0; i < n - 2; i += 2) {       ans.push_back({i + 1, i + 2, n});       arr[n] = arr[n] ^ arr[i + 1] ^ arr[i + 2];     }     for (long long i = 0; i < n - 2; i += 2) {       ans.push_back({i + 1, i + 2, n});     }     cout << ans.size() <<   n ;     for (long long i = 0; i < (long long)ans.size(); i++) {       cout << ans[i][0] <<     << ans[i][1] <<     << ans[i][2] <<   n ;     }   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(NULL);     cout.tie(NULL);     prim();     for (long long i = 2; i <= 100005; i++) {       if (pr[i] == false) {         prime.push_back(i);       }     }     long long t;     t = 1;     while (t--) {       solve();     }     return 0;   }   