Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
1.7 kB
1
Indexable
Never
#include<bits/stdc++.h>
using namespace std;
#define int long long
int INF=1e18;

void sol(){
    int n;
    cin>>n;
    vector<int> v(n),p(n),ans,x,y;
    vector<pair<int,int>> print;
    for(int i=0;i<n;i++){
        cin>>v[i];
        p[i]=v[i];
    }
    sort(p.begin(),p.end());
    p.resize(unique(p.begin(),p.end())-p.begin());
    int c=p.size();
    vector<int> a(c);
    for(int i=0;i<n;i++){
        int id=lower_bound(p.begin(),p.end(),v[i])-p.begin();
        a[id]++;
        v[i]=id;
    }
    for(int i=0;i<c;i++){
        if(a[i]&1){
            cout<<-1<<endl;
            return;
        }
    }
    for(int i=0;i<n;i=i+2){
        int y=v[i];
        int t=i;
        for(int j=i+1;j<n;j++){
            if(v[j]==v[i]){
                t=j;
                break;
            }
        }
        int t1=t;
        for(int j=n-1;j>=t;j--){
            print.push_back({t1,v[j]});

            t1++;
        }
        ans.push_back((n-t)*2);
        reverse(v.begin()+t,v.begin()+n);
        t1=i+1;
        for(int j=n-1;j>=t;j--){
            print.push_back({t1,v[j]});
            t1++;
        }
        ans.push_back((n-t)*2);
        reverse(v.begin()+t,v.begin()+n);
    }
    cout<<print.size()<<endl;
    for(auto q:print){
        cout<<q.first<<' '<<p[q.second]<<endl;
    }
    cout<<ans.size()+n/2<<endl;
    for(int i=0;i<n/2;i++){
        cout<<2<<' ';
    }
    for(int j=ans.size()-1;j>=0;j--){
        cout<<ans[j]<<' ';
    }
    cout<<endl;
}



signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--){
        sol();
    }

    return 0;
}