#pragma GCC optimize("O3") #ifdef LOCAL #include "algo/debug_ver3.hpp" #else #define debug(...) #define debugArr(...) #endif #include using namespace std; int main() { cin.tie(nullptr); ios::sync_with_stdio(false); int n, m; long long w; cin >> n >> m >> w; vector a(n), b(m), c(m); for (int i = 0; i < n; ++i) cin >> a[i]; for (int i = 0; i < m; ++i) cin >> b[i]; for (int i = 0; i < m; ++i) cin >> c[i]; vector> dp(n + 1, vector(n + 1)); for (int i = 0; i < n; ++i) for (int j = 0; j <= n; ++j) { if (j + 1 <= n) dp[i][j + 1] = max(dp[i][j + 1], dp[i][j]); if (j + 1 <= n) dp[i + 1][j + 1] = max(dp[i + 1][j + 1], dp[i][j] + a[i]); dp[i + 1][j] = max(dp[i + 1][j], dp[i][j]); } long long res = 0; for (int bit = 0; bit < 1 << m; ++bit) { long long weight = 0, value = 0; for (int i = 0; i < m; ++i) if (bit & 1 << i) weight += b[i], value += c[i]; if (weight > w) continue; res = max(res, value + dp[n][min(w - weight, (long long)(n))]); } cout << res << '\n'; }