#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
const int N = 2*1e5+10;
int n,a[N],b[N],cnt,s,fr,ou,aou[10],bou[10],cfpa[N],cfpb[N];
int posou[N];
typedef pair<int, int> PII;
#define x first
#define y second
bool swapji;
int main()
{
scanf("%d",&n);cnt=1;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);cfpa[a[i]]++;
if((a[i]&1)==0) ou++;
s^=a[i];
if(i>=3){
if((s&1)==0){
if((a[i-1]&1)==1 || (a[i-2]&1)==1 || (a[i]&1)==1) swapji=1;
}
s^=a[i-2];
}
}
for(int i=1;i<=n;i++){
scanf("%d",&b[i]);
cfpb[b[i]]++;
}
for(int i=1;i<=N-10;i++){
if(cfpa[i]!=cfpb[i]) {
printf("No");
return 0;
}
}
if(swapji){
if(ou>2 || ou==1) {
printf("Yes");
return 0;
}
int ca=0,cb=0;
for(int i=1;i<=n;i++){
if((a[i]&1)==0) aou[++ca]=a[i];
if((b[i]&1)==0) bou[++cb]=b[i];
}
if(aou[1]==bou[1] && aou[2]==bou[2]) printf("Yes");
else printf("No");
return 0;
}
for(int i=1;i<=n;i++){
if((a[i]&1)==1){
if(b[i]!=a[i]) {
printf("No");
return 0;
}
continue;
}
fr=i;
while(i<=n && (a[i]&1)==0 && ((a[i+1]&1)==0)) i++;
sort(a+fr,a+i+1);sort(b+fr,b+i+1);
for(int j=fr;j<=i;j++){
if(a[j]!=b[j]){
printf("No");
return 0;
}
}
}
printf("Yes");
return 0;
}