func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAXN = 505;   vector<int> ans;   struct node {     int val, id;     bool operator<(const node &o) const {       if (val == o.val) return id < o.id;       return val < o.val;     }   };   node a[MAXN], b[MAXN];   void doit(int n) {     for (int i = 1; i <= n - 2; i++) {       int id = i;       for (int j = i; j <= n; j++)         if (a[j] < a[id]) id = j;       for (int j = id; j >= i; j--) {         if (j - 2 >= i) {           ans.push_back(j - 2);           swap(a[j], a[j - 1]);           swap(a[j - 1], a[j - 2]);           j--;         } else if (j - 1 >= i) {           ans.push_back(j - 1);           ans.push_back(j - 1);           swap(a[j], a[j - 1]);           swap(a[j], a[j + 1]);         }       }     }   }   void solve() {     ans.clear();     int n;     scanf( %d , &n);     for (int i = 1; i <= n; i++) {       scanf( %d , &a[i].val);       a[i].id = i;     }     memcpy(b, a, sizeof(a));     doit(n);     if (a[n - 1].val > a[n].val) {       memcpy(a, b, sizeof(a));       bool flag = false;       for (int i = 1; i <= n && !flag; i++)         for (int j = i + 1; j <= n && !flag; j++)           if (a[i].val == a[j].val) {             swap(a[i], a[j]);             flag = true;           }       ans.clear();       doit(n);       if (a[n - 1].val > a[n].val) {         puts( -1 );         return;       }     }     printf( %d n , ans.size());     for (auto v : ans) printf( %d  , v);     puts(  );   }   int main() {     int T;     scanf( %d , &T);     while (T--) {       solve();     }     return 0;   }   