#include using namespace std; #ifdef LOCAL #include "settings/debug.cpp" #define _GLIBCXX_DEBUG #else #define Debug(...) void(0) #endif using ll = long long; #define rep(i, n) for (int i = 0; i < (n); ++i) int main() { int n, m, w; cin >> n >> m >> w; vector a(n), b(n), c(m), d(m); rep(i, n) cin >> a[i]; rep(i, n) cin >> b[i]; rep(i, m) cin >> c[i]; rep(i, m) cin >> d[i]; vector dp(1 << (n + m), vector(w + 1, -1)); dp[0][0] = 0; rep(bit, 1 << (n + m)) { rep(j, w + 1) { if (dp[bit][j] == -1) continue; rep(i, n) { if (bit & (1 << i)) continue; if (j + a[i] > w) continue; dp[bit | (1 << i)][j + a[i]] = max(dp[bit | (1 << i)][j + a[i]], dp[bit][j] + b[i]); } rep(i, m) { if (bit & (1 << (n + i))) continue; if (j - c[i] < 0) continue; dp[bit | (1 << (i + n))][j - c[i]] = max(dp[bit | (1 << (i + n))][j - c[i]], dp[bit][j] - d[i]); } } } ll ans = 0; rep(bit, 1 << (n + m)) rep(j, w + 1) ans = max(ans, dp[bit][j]); cout << ans << endl; return 0; }