#include <iostream>
#include <stdio.h>
#include <set>
#include <queue>
#include <vector>

using namespace std;

int N;
int a[100000], b[100000];
int c[100000];

void reverse (int i, int k) {
    if (i > k) swap (i, k);

    for (int j = 0; j < (i - k)/2; j++)
        swap (b[i + j], b[k - j]),
        swap (a[i + j], b[k - j]);
}

queue <pair <int ,int > > ans;

int main () {
    scanf ("%d", &N);
    for (int i = 0; i < N; i++)
        scanf ("%d", a + i), c[a[i]] = i;
    for (int i = 0; i < N; i++)
        scanf ("%d", b + i);

    for (int i = 0; i < N; i++) {
        if (i == c[b[i]]) continue;
        ans.push (make_pair (a[i], b[i]));

        reverse (i, c[b[i]]);
    }
    printf ("%d\n", ans.size());
    while (!ans.empty()) {
        printf ("%d %d\n", min (ans.front().first, ans.front().second), max (ans.front().first, ans.front().second));
        ans.pop();
    }

}
