1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <bits/stdc++.h>
using namespace std;

int arr[3001];
pair<int, int>tab[3001];
vector<int>v1[3001], v2[3001];
int win[3000];




void solve(){

    int n;
    cin>>n;
    for(int i=1; i<=n; i++){
        cin>>arr[i];
        tab[i].first=arr[i];
        tab[i].second=i;

    }
    sort(tab+1, tab+n+1);
//    cout<<endl;
//        for(int i=1; i<=n; i++){
//        cout<<tab[i].first<<" "<<tab[i].second<<endl;
//    }cout<<endl;
int ctr=0, br=0;
int t[n+1];
for(int i=1; i<=n; i++)win[i]=i;
    for(int j=1; j<=n; j++){
            br++;
        if(ctr==1){ break;}
        ctr=1;

        fill(t+1, t+n+1, 0);
        for(int i=1; i<=n; i++){
            if(tab[i].first==arr[i])continue;
            if(t[i]==1)continue;
            //int k=bin(1, n, tab[]);
            int k=tab[i].second;
            k=win[k];
            if(t[k]==1)continue;
            ctr=0;
           // cout<<i<<" "<<k<<endl;
            t[k]=1;
            //tab[i].second=i;
            t[i]=1;
            //tab[k].second=k;
            win[k]=i;
            win[i]=k;
            v1[j].push_back(i);
            v2[j].push_back(k);
            swap(arr[i], arr[k]);
        }


    }
    br-=2;
        cout<<br<<endl;
        for(int i=1; i<=br; i++){
            cout<<v1[i].size() * 2<<endl;
            for(int o=0; o<v1[i].size(); o++)cout<<v1[i][o]<<" ";
            for(int o=v2[i].size()-1; o>=0; o--)cout<<v2[i][o]<<" ";
            cout<<endl;
        }


//    cout<<endl;
//        for(int i=1; i<=n; i++){
//        //cout<<tab[i].first<<" "<<tab[i].second<<endl;
//        cout<<arr[i]<<" "<<t[i]<<endl;
//    }cout<<endl;


}



int main()
{
    cin.tie(0);
    cout.tie(0);
    ios_base::sync_with_stdio(0);
    solve();
    return 0;
}