def max_submatrix_sum(matrix):
    n = len(matrix)
    max_sum = float("-inf")

    # 遍历所有可能的行组合
    for i in range(n):
        temp = [0] * n  # 临时数组,存储从第 i 行到第 j 行的列累加和
        for j in range(i, n):
            # 更新临时数组
            for k in range(n):
                temp[k] += matrix[j][k]
            # 对临时数组使用 Kadane 算法,找到最大子数组和
            current_max = temp[0]
            global_max = temp[0]
            for k in range(1, n):
                current_max = max(temp[k], current_max + temp[k])
                global_max = max(global_max, current_max)
            # 更新全局最大值
            max_sum = max(max_sum, global_max)

    return max_sum


# 输入处理
n = int(input())
matrix = []
for _ in range(n):
    row = list(map(int, input().split()))
    matrix.append(row)

# 计算最大子矩阵和
result = max_submatrix_sum(matrix)
print(result)