/*
//카드2
#include <stdio.h>
int main()
{
int n, i, front, back;
int queue[500010];
scanf("%d", &n);
for(i=2; i<=n; i++){
queue[i]=i;
}
front=2;
back=n;
while(front!=back){
if(back==500000){
back=0;
}
else{
back++;
}
queue[back]=queue[front];
if(front==500000){
front=0;
front++;
}
else{
front+=2;
}
}
printf("%d", queue[front]);
return 0;
}
#include<stdio.h>
int main()
{
int n, x, i, s, t, s2=0, result=0;
scanf("%d%d", &n, &x);
for(i=0; i<n; i++){
scanf("%d%d", &s, &t);
if(s>s2&&s+t<=x){-
s2=s;
}
if(s+t<=x){
result=1;
}
}
if(result==0){
printf("-1");
}
else{
printf("%d", s2);
}
}
#include<stdio.h>
int main()
{
int n, i, cnt=0;
int a[250001]={};
scanf("%d", &n);
for(i=0; i<n; i++){
scanf("%d", &a[i]);
}
for(i=1; i<n; i++){
while(a[i]<a[i-1]){
a[i]*=2;
cnt++;
}
}
printf("%d", cnt);
}
*/
//반품 회수
#include<stdio.h>
int main()
{
int n, i, c=1, result=1, a;
int x[3001]={}, t[3001]={};
scanf("%d", &n);
for(i=0; i<n; i++){
scanf("%d", &a);
x[a]=1;
}
for(i=0; i<n; i++){
scanf("%d", &t[i]);
}
i=-1;
while(c!=0){
result++;
if(x[c]==1){
if(i==n-1){
a=1;
}
if(a==1){
i--;
}
else{
i++;
}
if(result>=t[i]){
x[c]=0;
t[i]=0;
}
else{
result+=t[i]-result;
}
}
if(a==1){
c--;
}
else{
c++;
}
}
printf("%d", result);
}