#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
int t,n,a[N];
void solve(){
map<int,int> mp;
vector<int> v,res2;
vector<pair<int,int>> res;
for(int i=1;i<=n;i++) mp[a[i]]++,v.push_back(a[i]);
for(auto it:mp) if(it.second%2){cout<<-1<<endl;return;}
int now=1;
for(int i=1;i<=n/2;i++){
auto it=++v.begin();
while(*it!=v[0]) it++;int len=it-v.begin();
for(int j=0;j<len-1;j++) res.push_back({now+j+len,v[j+1]});
reverse(v.begin(),it);
v.erase(v.begin()+len-1);v.erase(v.begin()+len-1);
now+=len*2;res2.push_back(len*2);
}
cout<<res.size()<<endl;
for(auto it:res) cout<<it.first<<" "<<it.second<<endl;
cout<<res2.size()<<endl;
for(auto it:res2) cout<<it<<" ";cout<<endl;
}
int main(){
scanf("%d",&t);
while(t--){
scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]);
solve();
}
}
Codeforces Round #773 (Div. 1) B. Repetitions Decoding
最新推荐文章于 2022-03-25 17:32:13 发布