#pragma GCC optimize("Ofast") #include using namespace std; typedef long long llint; const int MAXN = 5000; llint a[MAXN], b[MAXN], k[MAXN], k2[MAXN]; llint dp[MAXN + 1][MAXN + 1]; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); freopen("fruits.in", "r", stdin); freopen("fruits.out", "w", stdout); int n, i, j; cin>>n; for (i = 0; i < n; ++i) cin>>a[i]; for (i = 0; i < n; ++i) cin>>b[i]; for (i = 0; i < n; ++i) { cin>>k[i]; --k[i]; k2[i] = k[i]; } sort(k2, k2 + n); int m = unique(k2, k2 + n) - k2; for (i = 0; i < n; ++i) k[i] = lower_bound(k2, k2 + m, k[i]) - k2; for (i = n - 1; i >= 0; --i) { memcpy(dp[i], dp[i + 1], sizeof dp[i]); for (j = k[i]; j >= 0; --j) { dp[i][j] += a[i] + k2[j] * b[i]; if (dp[i][j + 1] > dp[i][j]) dp[i][j] = dp[i][j + 1]; } } cout<