#include<bits/stdc++.h>
using namespace std;
const int N=3e5+5;
int n;
inline int read()
{
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int st[N][20];
int query(int l,int r){
int k=log2(r-l+1);
return max(st[l][k],st[r-(1<<k)+1][k]);
}
int check(int x,int i){
int l=1,r=n;
while(l<r){
int mid=(l+r)>>1;
if(max(query(i-mid,i-1),query(i+1,i+mid))>=x){
r=mid;
}else{
l=mid+1;
}
if(l==n){
return -1;
}else{
return l;
}
}
}
void createST(){
for(int i=1;i<=log2(n*3);i++){
for(int j=1;j+(1<<i)-1<=n+n+n;j++){
st[j][i]=max(st[j][i-1],st[j+(1<<i-1)][i-1]);
}
}
}
int main(){
n=read();
for(int i=1;i<=n;i++){
st[i][0]=st[i+n][0]=st[i+n+n][0]=read();
}
createST();
for(int i=1;i<=n;i++){
int a=read();
int a2=check(a,i+n);
printf("%d ",a2);
}
return 0;
}