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());