#include <bits/stdc++.h>
using namespace std;
vector<pair<int,int>> ans;
void solve(vector<int>& P, int offset) {
int n = P.size();
if (n <= 1) return;
int pos = find(P.begin(), P.end(), n) - P.begin(); // n의 위치
if (pos != n-1) {
for (int i = pos; i < n-1; i++) {
swap(P[i], P[i+1]);
ans.push_back({i+1+offset, i+2+offset});
}
}
// 마지막 원소를 제외한 나머지 부분 재귀 처리
vector<int> sub(P.begin(), P.end()-1);
solve(sub, offset);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<int> P(n);
for (int i = 0; i < n; i++) cin >> P[i];
// 역전 개수 parity 체크
long long inv = 0;
for (int i = 0; i < n; i++)
for (int j = i+1; j < n; j++)
if (P[i] > P[j]) inv++;
long long total = 1LL * n * (n-1) / 2;
if ((inv % 2) != (total % 2)) {
cout << 0 << "\n";
return 0;
}
vector<int> Pcopy = P;
solve(Pcopy, 0);
cout << 1 << "\n";
for (auto &p : ans)
cout << p.first << " " << p.second << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8cGFpcjxpbnQsaW50Pj4gYW5zOwoKdm9pZCBzb2x2ZSh2ZWN0b3I8aW50PiYgUCwgaW50IG9mZnNldCkgewogICAgaW50IG4gPSBQLnNpemUoKTsKICAgIGlmIChuIDw9IDEpIHJldHVybjsKCiAgICBpbnQgcG9zID0gZmluZChQLmJlZ2luKCksIFAuZW5kKCksIG4pIC0gUC5iZWdpbigpOyAvLyBu7J2YIOychOy5mAogICAgaWYgKHBvcyAhPSBuLTEpIHsKICAgICAgICBmb3IgKGludCBpID0gcG9zOyBpIDwgbi0xOyBpKyspIHsKICAgICAgICAgICAgc3dhcChQW2ldLCBQW2krMV0pOwogICAgICAgICAgICBhbnMucHVzaF9iYWNrKHtpKzErb2Zmc2V0LCBpKzIrb2Zmc2V0fSk7CiAgICAgICAgfQogICAgfQoKICAgIC8vIOuniOyngOuniSDsm5Dshozrpbwg7KCc7Jm47ZWcIOuCmOuouOyngCDrtoDrtoQg7J6s6reAIOyymOumrAogICAgdmVjdG9yPGludD4gc3ViKFAuYmVnaW4oKSwgUC5lbmQoKS0xKTsKICAgIHNvbHZlKHN1Yiwgb2Zmc2V0KTsKfQoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIGludCBuOwogICAgY2luID4+IG47CiAgICB2ZWN0b3I8aW50PiBQKG4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGNpbiA+PiBQW2ldOwoKICAgIC8vIOyXreyghCDqsJzsiJggcGFyaXR5IOyytO2BrAogICAgbG9uZyBsb25nIGludiA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgICBmb3IgKGludCBqID0gaSsxOyBqIDwgbjsgaisrKQogICAgICAgICAgICBpZiAoUFtpXSA+IFBbal0pIGludisrOwoKICAgIGxvbmcgbG9uZyB0b3RhbCA9IDFMTCAqIG4gKiAobi0xKSAvIDI7CiAgICBpZiAoKGludiAlIDIpICE9ICh0b3RhbCAlIDIpKSB7CiAgICAgICAgY291dCA8PCAwIDw8ICJcbiI7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgdmVjdG9yPGludD4gUGNvcHkgPSBQOwogICAgc29sdmUoUGNvcHksIDApOwoKICAgIGNvdXQgPDwgMSA8PCAiXG4iOwogICAgZm9yIChhdXRvICZwIDogYW5zKQogICAgICAgIGNvdXQgPDwgcC5maXJzdCA8PCAiICIgPDwgcC5zZWNvbmQgPDwgIlxuIjsKCiAgICByZXR1cm4gMDsKfQ==