#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; using namespace atcoder; typedef long long ll; typedef pair P; using mint=modint1000000007; using ull=unsigned long long; int n; int a[200020], b[200020]; mt19937_64 mt(334); int pra[400040], prb[400040]; ull z[400040]; ull v[200020]; const int sq=300; ull s[5000]; vector vs[5000]; int main() { cin>>n; for(int i=0; i>a[i]; } for(int i=0; i>b[i]; } for(int i=1; i<=400000; i++) z[i]=mt(); fill(pra, pra+400001, -1); fill(prb, prb+400001, -1); ll ans=0; for(int i=0; i=l-sq*l1 && i<=r-sq*r1){ v[i+sq*l1]=(x^v[i+sq*l1]^s[l1]); vs[l1][i]=v[i+sq*l1]; }else{ v[i+sq*l1]=(v[i+sq*l1]^s[l1]); vs[l1][i]=v[i+sq*l1]; } } s[l1]=0; sort(vs[l1].begin(), vs[l1].end()); return; } for(int i=0; i=l-sq*l1){ v[i+sq*l1]=(x^v[i+sq*l1]^s[l1]); vs[l1][i]=v[i+sq*l1]; }else{ v[i+sq*l1]=(v[i+sq*l1]^s[l1]); vs[l1][i]=v[i+sq*l1]; } } s[l1]=0; sort(vs[l1].begin(), vs[l1].end()); for(int i=0; i