#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 ;

}