fun main(args: Array<String>) {
    val (n, m) = readLine()!!.split(" ").map { it.toInt() }

    val x = LongArray(n)
    val y = LongArray(n)
    val z = LongArray(n)

    for ( i in 0 until n) {
        val (a, b, c) = readLine()!!.split(" ").map { it.toLong() }
        x[i] = a
        y[i] = b
        z[i] = c
    }

    // 最大化させるときのシチュエーションを考える

    // 解説：それぞれ符号が変わってくることは考えていたが，そこから実際に符号を掛けて探索する方針を考えられなかった
    // それぞれの項目に絶対値演算をして総和
    // 絶対値 -> + or - をかける かどうか
    // -> 各項目を + or - をかける前提で足し合わせたときの Max を求める ( 2,2,2 = 8 パターン）
    // -> + or - をかけた後の上位 m 個を取ればOK

    var max = 0L
    val sign = listOf(-1, 1)

    for (i in sign) {
        for (j in sign) {
            for (k in sign){
                var xTmp = x.clone().map { i*it }.toLongArray()
                var yTmp = y.clone().map { j*it }.toLongArray()
                var zTmp = z.clone().map { k*it }.toLongArray()

                // ソート
                // WA x,y,z 個別にはソートできないので注意
                val sumArray = (0..n-1).map { xTmp[it] + yTmp[it] + zTmp[it]}.sortedDescending()
                var sum = 0L
                for ( l in 0 until m) {
                    sum += sumArray[l]
                }

                if ( sum >= max) {
                    max = sum
                }
            }
        }
    }

    println(max)
}