const rl = require("readline").createInterface({ input: process.stdin });
const iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
const arr = (await readline())
.split(" ")
.map(Number)
.sort((a, b) => b - a);
const n = Number(await readline());
let sum = arr.reduce((a, b) => a + b);
let left = Math.max(...arr),
right = sum;
const createWorkers = () => Array.from({ length: n }, () => 0);
const backtrack = (val, workers, idx) => {
if (idx >= arr.length) return true;
for (let i = 0; i < workers.length; i++) {
if (workers[i] + arr[idx] <= val) {
workers[i] += arr[idx];
if (backtrack(val, workers, idx + 1)) return true;
workers[i] -= arr[idx];
}
}
return false;
};
while (left <= right) {
const mid = (left + right) >> 1;
if (backtrack(mid, createWorkers(), 0)) {
right = mid - 1;
} else {
left = mid + 1;
}
}
console.log(left);
})();