#include <iostream>
#include <cstdio>
#include <vector>
#include <map>
#include <algorithm>

using namespace std;

const int INF = 0x3FFFFFFF;

typedef long long LL;
typedef pair<int, int> PII;

int a[5010];
int w[5010];
int dp[5010];

int main()
{
	ios::sync_with_stdio(false);
	int n;
	while (cin >> n) {
		if (n == 0) break;
		for (int i = 1; i <= n; i++) cin >> a[i];
		for (int i = 1; i <= n; i++) cin >> w[i];
		vector<PII> Q;
		for (int i = 1, j = n; i < j; i++, j--) {
			LL left = a[i], right = a[j];
			int c0 = 1, c1 = 1;
			while (left != right) {
				if (left < right) 
					c0++, left += a[++i];
				else
					c1++, right += a[--j];
				if (i >= j) break;
			}
			if (left == right) Q.push_back(PII(c0, c1));
		}
		for (int i = 1; i <= Q.size(); i++) {
			int c0 = 0, c1 = 0;
			dp[i] = INF;
			for (int j = i - 1; j >= 0; j--) {
				c0 += Q[j].first;
				c1 += Q[j].second;
				dp[i] = min(dp[i], dp[j] + w[c0] + w[c1]);
			}
		}
		int ans = w[n], cnt = n;
		for (int i = 0; i < Q.size(); i++) {
			cnt -= Q[i].first + Q[i].second;
			ans = min(ans, dp[i + 1] + w[cnt]);
		}
		cout << ans << '\n';
	}
	return 0;
}
