#include <bits/stdc++.h>
using namespace std;
const long double pi = acos(-1), EPS = 1e-8;
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long lcm(long long a, long long b) { return (a / gcd(a, b)) * b; }
bool getBit(long long num, int idx) { return ((num >> idx) & 1); }
long long setBit(long long num, int idx, bool val) {
  return val ? (num | (1LL << idx)) : (num & ~(1LL << idx));
}
long long flipBit(long long num, int idx) { return (num ^ (1LL << idx)); }
long long leastBit(long long num) { return (num & -num); }
long long Mod(long long num, long long mod) { return (num & mod - 1); }
bool isPowerOfTwo(int first) { return first && (!(first & (first - 1))); }
int turnOnLastZero(int S) { return S | S + 1; }
int turnOffLastBit(int S) { return S & S - 1; }
int turnOnLastConsecutiveZeroes(int S) { return S | S - 1; }
int turnOffLastConsecutiveBits(int S) { return S & S + 1; }
vector<int> genAllSubmask(int mask) {
  vector<int> v;
  for (int subMask = mask;; subMask = (subMask - 1) & mask) {
    v.push_back(subMask);
    if (subMask == 0) break;
  }
  return v;
}
long long fast_power(long long base, long long power) {
  long long result = 1;
  while (power > 0) {
    if (power % 2 == 1) {
      result = (result * base) % 1000000007;
    }
    base = (base * base) % 1000000007;
    power = power / 2;
  }
  return result;
}
bool isprime(long long n) {
  bool flag = true;
  if (n <= 1) return false;
  for (long long i = 2; i <= sqrt(n); i++) {
    if (n % i == 0) {
      flag = false;
      break;
    }
  }
  return flag;
}
long long n, m, k, ansl, ansr;
vector<long long> fre(26);
string s;
void slove() {
  cin >> n;
  vector<long long> v(n + 1);
  for (int i = 1; i <= n; i++) cin >> v[i];
  for (int i = n; i >= 0; i--) {
    for (int j = 1; j < i; j++) {
      if (v[j] > v[j + 1]) {
        swap(v[j], v[j + 1]);
        cout << j << " " << j + 1 << "\n";
      }
    }
  }
}
int main() {
  cin.tie(0);
  cout.tie(0);
  cin.sync_with_stdio(0);
  slove();
  return 0;
}
