#include <bits/stdc++.h>   using namespace std;   mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());   clock_t startTime;   double getCurrentTime() {     return (double)(clock() - startTime) / CLOCKS_PER_SEC;   }   void solve() {     int n;     cin >> n;     vector<int> a(n);     int totalXor = 0;     for (int i = 0; i < n; ++i) {       cin >> a[i];       totalXor ^= a[i];     }     if (totalXor == 1) {       cout <<  NO n ;       return;     }     auto solve = [](int l, int r) {       assert((r - l + 1) % 2 == 1);       vector<int> res;       for (int i = l; i <= r - 2; i += 2) {         res.push_back(i);       }       for (int i = r - 4; i >= l; i -= 2) {         res.push_back(i);       }       return res;     };     if (n % 2 == 1) {       auto res = solve(0, n - 1);       cout <<  YES n ;       cout << res.size() <<   n ;       for (auto x : res) {         cout << x + 1 <<    ;       }       cout <<   n ;     } else {       bool ok = false;       int prefXor = 0;       for (int i = 0; i < n; ++i) {         prefXor ^= a[i];         if (prefXor == 0 && i % 2 == 0) {           auto res1 = solve(0, i);           auto res2 = solve(i + 1, n - 1);           cout <<  YES n ;           cout << res1.size() + res2.size() <<   n ;           for (auto x : res1) {             cout << x + 1 <<    ;           }           for (auto x : res2) {             cout << x + 1 <<    ;           }           cout <<   n ;           ok = true;           break;         }       }       if (!ok) cout <<  NO n ;     }   }   int main() {     startTime = clock();     ios_base::sync_with_stdio(false);     cin.tie(nullptr);     int tests;     cin >> tests;     for (int t = 0; t < tests; ++t) {       solve();     }     return 0;   }   