#include <cstdio>
#include <algorithm>
typedef unsigned int ui32_t;
ui32_t Array[1<<20], Index[1<<20];
ui32_t N, K, i, j;
ui32_t Revs[1<<20][2];
int main(){
    scanf("%u", &N);
    for(i=0;i<N;i++){
        scanf("%u", &j);
        Index[j-1]=i;
    }
    for(i=0;i<N;i++){
        scanf("%u", &j);
        Array[Index[j-1]]=i;
    }
    for(i=0;i<N;i++){
        Index[Array[i]]=i;
    }
    for(i=0;i<N;i++){
        if(Array[i]==i) continue;
        Revs[K][0]=i;
        Revs[K][1]=Index[i];
        K++;
        if(i+2<=Index[i]){
            Revs[K][0]=i+1;
            Revs[K][1]=Index[i]-1;
            K++;
        }
        std::swap(Array[i], Array[Index[i]]);
        Index[Array[Index[i]]]=Index[i];
        Index[i]=i;
    }
    j=0;
    for(i=0;i<K;i++,j++){
        while(i!=K-1&&Revs[i][0]==Revs[i+1][0]&&Revs[i][1]==Revs[i+1][1]){
            i+=2;
        }
        Revs[j][0]=Revs[i][0];
        Revs[j][1]=Revs[i][1];
    }
    K=j;
    printf("%u\n", K);
    for(i=0;i<K;i++){
        printf("%u %u\n", Revs[i][0]+1, Revs[i][1]+1);
    }
    return 0;
}
