#include <bits/stdc++.h>
int a[305], b[305];
int n;
struct Op {
  int u, v;
};
Op op1[100000], op2[100000];
int top1, top2;
int main(void) {
  while (scanf("%d", &n) != EOF) {
    int i, j;
    for (i = 1; i <= n; i++) scanf("%d", &a[i]);
    for (i = 1; i <= n; i++) scanf("%d", &b[i]);
    top1 = top2 = 0;
    for (i = 1; i < n; i++) {
      for (j = 1; j <= n - i; j++) {
        if (b[j] > b[j + 1]) {
          int tmp = b[j + 1];
          b[j + 1] = b[j];
          b[j] = tmp;
          op1[top1].u = j;
          op1[top1++].v = j + 1;
        }
      }
    }
    for (i = 1; i < n; i++) {
      for (j = 1; j <= n - i; j++) {
        if (a[j] > a[j + 1]) {
          int tmp = a[j + 1];
          a[j + 1] = a[j];
          a[j] = tmp;
          op2[top2].u = j;
          op2[top2++].v = j + 1;
        }
      }
    }
    int ans = top1 + top2;
    printf("%d\n", ans);
    for (i = 0; i < top1; i++) printf("%d %d\n", op1[i].u, op1[i].v);
    for (i = top2 - 1; i >= 0; i--) printf("%d %d\n", op2[i].u, op2[i].v);
  }
  return 0;
}
