#include<iostream>
using namespace std;
// 创建土地
short land[32][32];
short n,m;// 实际使用的土地大小
short landA[32][32];//用A收割机收割数量记录
short landB[32][32];// 用B收割机收割数量记录
int main(){
cin>>n>>m;
// 存储农作物产量
for(short i=1;i<=n;i++){
for(short j=1;j<=m;j++){
scanf("%hd",&land[i][j]);
}
}
// A收割机处理
for(short i=1;i<=n;i++){
for(short j=1;j<=m;j++){
// 上下相邻的两个点到达该位置比较谁大就选谁
landA[i][j] = max(landA[i-1][j]+land[i][j],landA[i][j-1]+land[i][j]);
}
}
// B收割机处理
for(short i=1;i<=n;i++){
for(short j=m;j>=1;j--){
landB[i][j] = max(landB[i-1][j]+land[i][j],landB[i][j+1]+land[i][j]);
}
}
printf("%d %d",landA[n][m],landB[n][1]);
return 0;
}