交换排序
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <queue>
#include <map>
using namespace std;
#define INF 1e9
#define maxn 3010
#define rep(i,x,y) for(int i=x;i<=y;i++)
#define mset(x) memset(x,0,sizeof(x))
int n;
int a[maxn];
vector< pair<int, int> > v;
int main(){
// freopen("a.txt","r",stdin);
// freopen(".out","w",stdout);
while(cin>>n)
{
rep(i,1,n) scanf("%d", &a[i]);
int cnt = 0;
rep(i,1,n){
int minv=a[i], minp=i;
rep(j,i+1,n){
if(minv > a[j])
{
minv = a[j];
minp = j;
}
}
if(minp != i){
swap(a[i], a[minp]);
cnt++;
v.push_back(make_pair(i-1, minp-1));
}
}
printf("%d\n", cnt);
for(int i=0; i<v.size(); i++ )
{
printf("%d %d\n", v[i].first, v[i].second);
}
}
return 0;
}