#include
using namespace std;
const int N = 1010;
int a[N],b[N]; int n,cnt = 0;
void dfs(int res,int u,int flag) { if(res<0) return ; if(u == n+1){ if(flag<3) res+=a[u-1]; //走到倒数第二个可能不选择补给直接走到终点所以要判定一下 cnt = max(cnt,res); return ; }
if(flag<3)//选
{
res-=b[u-1];
res += a[u-1];
dfs(res,u+1,flag+1);
res-=a[u-1];
res+=b[u-1];
}
//不选
dfs(res-b[u-1],u+1,flag);
}
int main() { cin >>n; for(int i = 1;i<=n;i++) cin >>a[i]; for(int i = 1;i<n;i++) cin >>b[i];
if(a[1]<b[1]) {
cout <<-1;
return 0;
}
dfs(0,2,0);
cout <<cnt;
return 0 ;
}