const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async ():Promise<string> => (await iter.next()).value;
const _map:Array<Array<number>> = [];
const _note:Array<Array<number>> = [];
(async function():Promise<number>{
const [N, K] = (await readline()).split(' ').map(Number);
for(let _=0;_<N;_++){
_map.push((await readline()).split(' ').map(Number));
}
_note.push(_map[0])
for(let i=1;i<N;i++){
_note.push([]);
_map[i].forEach((cost,index)=>{
let temp:number;
if(index===0) temp = _note[i-1][0]
else if(index===1) temp = Math.max(_note[i-1][0], _note[i-1][1]??-Infinity)
else if(index===2*i-1) temp = Math.max(_note[i-1][2*(i-1)], _note[i-1][2*(i-1)-1])
else if(index===2*i) temp = _note[i-1][2*(i-1)]
else temp = Math.max(_note[i-1][index-2],_note[i-1][index-1],_note[i-1][index]);
_note[i].push(temp+cost)
})
}
// console.log(_note);
return Math.max(..._note[N-1].slice(N-K-1,N+K))
})()
.then(res=>console.log(res))
.catch(()=>console.log(-1))
.finally(()=>rl.close());