func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long INF = 1e18;   struct custom_hash {     static uint64_t splitmix64(uint64_t x) {       x += 0x9e3779b97f4a7c15;       x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;       x = (x ^ (x >> 27)) * 0x94d049bb133111eb;       return x ^ (x >> 31);     }     size_t operator()(uint64_t x) const {       static const uint64_t FIXED_RANDOM =           chrono::steady_clock::now().time_since_epoch().count();       return splitmix64(x + FIXED_RANDOM);     }   };   template <typename T>   istream& operator>>(istream& is, vector<T>& v) {     for (auto& i : v) is >> i;     return is;   }   template <typename T>   ostream& operator<<(ostream& os, vector<T>& v) {     for (auto& i : v) os << i <<    ;     return os;   }   long long mystoi(string str) {     stringstream ss(str);     long long ans = 0;     ss >> ans;     return ans;   }   long long exp(long long x, long long ex) {     long long ans = 1ll;     while (ex > 0) {       if (ex & 1ll) ans = (ans * x);       ex >>= 1ll;       x = (x * x);     }     return ans;   }   bool sort_cond(const pair<long long, long long>& a,                  const pair<long long, long long>& b) {     if (a.first == b.first) return a.second < b.second;     return a.first < b.first;   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     long long t = 1;     cin >> t;     long long lo;     while (t--) {       long long n;       cin >> n;       vector<long long> a(2 * n);       cin >> a;       vector<long long> o, e;       for (long long i = (0); i < (long long)(2 * n); i++) {         if (a[i] % 2)           o.push_back(i + 1);         else           e.push_back(i + 1);       }       long long cnt = 0;       if (o.size() % 2) o.pop_back();       if (e.size() % 2) e.pop_back();       if (o.size() > e.size()) {         for (long long i = (0); i < (long long)(o.size()); i++) {           if (cnt == n - 1) break;           cout << o[i] <<     << o[i + 1] << endl;           cnt++;           i++;         }         for (long long i = (0); i < (long long)(e.size()); i++) {           if (cnt == n - 1) break;           cout << e[i] <<     << e[i + 1] << endl;           cnt++;           i++;         }       } else {         for (long long i = (0); i < (long long)(e.size()); i++) {           if (cnt == n - 1) break;           cout << e[i] <<     << e[i + 1] << endl;           cnt++;           i++;         }         for (long long i = (0); i < (long long)(o.size()); i++) {           if (cnt == n - 1) break;           cout << o[i] <<     << o[i + 1] << endl;           cnt++;           i++;         }       }     }   }   