const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
const n = Number(await readline());
const trees = (await readline()).split(" ").map(Number);
const treeNum = Number(await readline());
let left = 1;
let right = trees[trees.length - 1] - trees[0];
const canCut = (mid) => {
let count = 1;
let last = 0;
for (let i = 1; i < n; i++) {
if (trees[i] - trees[last] >= mid) {
count++;
last = i;
}
}
return count >= treeNum;
};
while (left < right) {
const mid = (left + right) >> 1;
if (canCut(mid)) {
left = mid;
} else {
right = mid - 1;
}
}
console.log(left);
})();