#include<bits/stdc++.h>
using namespace std;
const int MOD = 1e8 - 3;
long long a[100001], b[100001],n,orig_a[1000001],orig_b[100001],sorting[100001],temp[100001];
long long ans = 0;
map<long long, long long> map_a, map_b;
void input(){
scanf("%lld", &n);
for (int i = 1; i <= n;i++){
scanf("%lld", &a[i]);
orig_a[i] = a[i];
}
for (int i = 1; i <= n;i++){
scanf("%lld", &b[i]);
orig_b[i] = b[i];
}
}
void mapping(){
sort(a + 1, a + 1 + n);
sort(b + 1, b + 1 + n);
for (int i = 1; i <= n;i++){
map_a[a[i]] = i;
map_b[b[i]] = i;
}
for (int i = 1; i <= n;i++){
orig_a[i] = map_a[orig_a[i]];
orig_b[i] = map_b[orig_b[i]];
}
for (int i = 1; i <= n;i++){
sorting[orig_a[i]] = orig_b[i];
}
}
void merge(int l,int r){
if(l==r){
return;
}
int mid = (l + r) / 2;
merge(l, mid);
merge(mid + 1, r);
int seg_l_begin = l, seg_r_begin = mid+1, temp_begin = l;
while(seg_l_begin<=mid&&seg_r_begin<=r){
if(sorting[seg_l_begin]<=sorting[seg_r_begin]){
temp[temp_begin] = sorting[seg_l_begin];
temp_begin++;
seg_l_begin++;
}
else{
temp[temp_begin] = sorting[seg_r_begin];
temp_begin++;
seg_r_begin++;
ans += (mid - (seg_l_begin - 1))%MOD;
}
}
while(seg_l_begin<=mid){
temp[temp_begin] = sorting[seg_l_begin];
temp_begin++;
seg_l_begin++;
}
while(seg_r_begin<=r){
temp[temp_begin] = sorting[seg_r_begin];
temp_begin++;
seg_r_begin++;
}
for (int i = l; i <= r;i++){
sorting[i] = temp[i];
}
}
int main(){
input();
mapping();
merge(1,n);
printf("%lld\n", ans%MOD);
system("pause");
return 0;
}