#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int n,f[100005],t[100005],ans;
struct node{
int h,x;
}a[100005],b[100005];
bool cmp(node a,node b){ return a.h<b.h;}
void solve(int l,int r)
{
if(l==r) return ;
int mid=(l+r)/2;
solve(l,mid);solve(mid+1,r);
int i=l,j=mid+1,p=l;
while(i<=mid&&j<=r)
{
if(f[i]>f[j]) t[p++]=f[j++],ans+=mid-i+1,ans%=99999997;
else t[p++]=f[i++];
}
while(i<=mid) t[p++]=f[i++];
while(j<=r) t[p++]=f[j++];
for(int i=l;i<=r;i++)
f[i]=t[i];
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++){scanf("%d",&a[i].h);a[i].x=i; }
for(int i=1;i<=n;i++) {scanf("%d",&b[i].h);b[i].x=i;}
sort(a+1,a+1+n,cmp);
sort(b+1,b+1+n,cmp);
for(int i=1;i<=n;i++) f[a[i].x]=b[i].x;
//a从小到大对应b从小到大的位置
solve(1,n);
cout<<ans;
return 0;
}