#include<bits/stdc++.h>
using namespace std;
int n , a[105] , d[105] , stdn[105];
bool flag = 1 , filln[105];
bool check(int p , int q)
{
while(p < 1)
{
p += n;
}
while(p > n)
{
p -= n;
}
if(a[p] == q)
{
return 1;
}
if(filln[p])
{
return 0;
}
filln[p] = 1;
return check(p - d[p] , q) || check(p + d[p] , q);
}
int main()
{
ios::sync_with_stdio(0);
ios_base::sync_with_stdio(0);
cin >> n;
for(int i = 1 ; i <= n ; i++)
{
cin >> a[i];
}
for(int i = 1 ; i <= n ; i++)
{
cin >> d[i];
}
for(int i = 1 ; i <= n ; i++)
{
stdn[i] = i;
}
for(int i = 1 ; i <= n ; i++)
{
if(stdn[i] != a[i])
{
for(int j = 1 ; j <= n ; j++)
{
filln[j] = 0;
}
if(!check(i , stdn[i]))
{
flag = 0;
}
}
}
if(flag)
{
cout << "YES";
}
else
{
cout << "NO";
}
return 0;
}
DFS找连通分量