max { max = sum } } // 세로 if i + 3 < N { var sum = 0 for k in 0...3 { sum += arr[(i + k) * M + j] } if sum > max { max = sum } } // 노란색 if i + 1 < N && j + 1 < M{ let sum = arr[i * M + j] + arr[i * M + (j + 1)] + arr[(i + 1) * M + j] + arr[(i + 1) * M + (j + 1)] if sum > max { max = sum } } "> max { max = sum } } // 세로 if i + 3 < N { var sum = 0 for k in 0...3 { sum += arr[(i + k) * M + j] } if sum > max { max = sum } } // 노란색 if i + 1 < N && j + 1 < M{ let sum = arr[i * M + j] + arr[i * M + (j + 1)] + arr[(i + 1) * M + j] + arr[(i + 1) * M + (j + 1)] if sum > max { max = sum } } "> max { max = sum } } // 세로 if i + 3 < N { var sum = 0 for k in 0...3 { sum += arr[(i + k) * M + j] } if sum > max { max = sum } } // 노란색 if i + 1 < N && j + 1 < M{ let sum = arr[i * M + j] + arr[i * M + (j + 1)] + arr[(i + 1) * M + j] + arr[(i + 1) * M + (j + 1)] if sum > max { max = sum } } ">
// 14500
import Foundation

let a = readLine()!.components(separatedBy: " ").map{ Int($0)! }
let N = a[0]
let M = a[1]
var arr:[Int] = []
var max = 0

for _ in 1...N {
    let input = readLine()!.components(separatedBy: " ").map{ Int($0)! }
    for i in 0..<M {
        arr.append(input[i])
    }
}

for i in 0..<N {
    for j in 0..<M {
        
        // 하늘색
        // 가로
        if j + 3 < M {
            var sum = 0
            for k in 0...3 {
                sum += arr[i * M + j + k]
            }
            if sum > max { max = sum }
        }
        
        // 세로
        if i + 3 < N {
            var sum = 0
            for k in 0...3 {
                sum += arr[(i + k) * M + j]
            }
            if sum > max { max = sum }
        }
        
        // 노란색
        if i + 1 < N && j + 1 < M{
            let sum = arr[i * M + j] + arr[i * M + (j + 1)] + arr[(i + 1) * M + j] + arr[(i + 1) * M + (j + 1)]
            if sum > max { max = sum }
        }
        
        // 주황색 - 시계방향 회전
        // 0
        if i + 2 < N && j + 1 < M {
            let sum = arr[i * M + j] + arr[(i + 1) * M + j] + arr[(i + 2) * M + j] + arr[(i + 2) * M + (j + 1)]
            if sum > max { max = sum }
        }
        // 90
        if i + 1 < N && j + 2 < M {
            let sum = arr[i * M + j] + arr[i * M + (j + 1)] + arr[i * M + (j + 2)] + arr[(i + 1) * M + j]
            if sum > max { max = sum }
        }
        // 180
        if i + 2 < N && j + 1 < M {
            let sum = arr[i * M + j] + arr[i * M + (j + 1)] + arr[(i + 1) * M + (j + 1)] + arr[(i + 2) * M + (j + 1)]
            if sum > max { max = sum }
        }
        // 270
        if i + 1 < N && j + 2 < M {
            let sum = arr[i * M + (j + 2)] + arr[(i + 1) * M + j] + arr[(i + 1) * M + (j + 1)] + arr[(i + 1) * M + (j + 2)]
            if sum > max { max = sum }
        }
        // 대칭
        // 0
        if i + 2 < N && j + 1 < M {
            let sum = arr[i * M + j + 1] + arr[(i + 1) * M + (j + 1)] + arr[(i + 2) * M + j] + arr[(i + 2) * M + (j + 1)]
            if sum > max { max = sum }
        }
        //90
        if i + 1 < N && j + 2 < M {
            let sum = arr[i * M + j] + arr[i * M + (j + 1)] + arr[i * M + (j + 2)] + arr[(i + 1) * M + (j + 2)]
            if sum > max { max = sum }
        }
        //180
        if i + 2 < N && j + 1 < M {
            let sum = arr[i * M + j] + arr[i * M + (j + 1)] + arr[(i + 1) * M + j] + arr[(i + 2) * M + j]
            if sum > max { max = sum }
        }
        //270
        if i + 1 < N && j + 2 < M {
            let sum = arr[i * M + j] + arr[(i + 1) * M + j] + arr[(i + 1) * M + (j + 1)] + arr[(i + 1) * M + (j + 2)]
            if sum > max { max = sum }
        }
        
        // 연두색
        // 0
        if i + 2 < N && j + 1 < M {
            let sum = arr[i * M + j] + arr[(i + 1) * M + j] + arr[(i + 1) * M + (j + 1)] + arr[(i + 2) * M + (j + 1)]
            if sum > max { max = sum }
        }
        
        // 90
        if i + 1 < N && j + 2 < M {
            let sum = arr[i * M + (j + 1) ] + arr[i * M + (j + 2)] + arr[(i + 1) * M + j] + arr[(i + 1) * M + (j + 1)]
            if sum > max { max = sum }
        }
        // 대칭
        // 0
        if i + 2 < N && j + 1 < M {
            let sum = arr[i * M + j + 1] + arr[(i + 1) * M + j] + arr[(i + 1) * M + (j + 1)] + arr[(i + 2) * M + j]
            if sum > max { max = sum }
        }
        // 90
        if i + 1 < N && j + 2 < M {
            let sum = arr[i * M + j ] + arr[i * M + (j + 1)] + arr[(i + 1) * M + (j + 1)] + arr[(i + 1) * M + (j + 2)]
            if sum > max { max = sum }
        }
        
        // 핑크
        // 0
        if i + 1 < N && j + 2 < M {
            let sum = arr[i * M + j] + arr[i * M + (j + 1)]  + arr[i * M + (j + 2)]  + arr[(i + 1) * M + (j + 1)]
            if sum > max { max = sum }
        }
        
        //90
        if i + 2 < N && j + 1 < M {
            let sum = arr[i * M + (j + 1)] + arr[(i + 1) * M + j]  + arr[(i + 1) * M + (j + 1)]  + arr[(i + 2) * M + (j + 1)]
            if sum > max { max = sum }
        }
        
        //180
        if i + 1 < N && j + 2 < M {
            let sum = arr[i * M + (j + 1)] + arr[(i + 1) * M + j]  + arr[(i + 1) * M + (j + 1)]  + arr[(i + 1) * M + (j + 2)]
            if sum > max { max = sum }
        }
        
        //270
        if i + 2 < N && j + 1 < M {
            let sum = arr[i * M + j] + arr[(i + 1) * M + j]  + arr[(i + 1) * M + (j + 1)]  + arr[(i + 2) * M + j]
            if sum > max { max = sum }
        }
    }
}

print(max)