#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m,i,j,k;//n行,m列
int a[110][110] = {0};
int b[110][110] = {0};
//存放路径
int r[10010] = {0};
cin>>n>>m;
for(i = 1;i <= n;i++){
for(j = 1;j <= m;j++){
cin>>a[i][j];
}
}
//算出走到每个点,最多能摘到的花生
for(i = 1;i <= n;i++){
for(j = 1;j <= m;j++){
b[i][j] = a[i][j];//记录原始数据
a[i][j] = a[i][j] + max(a[i][j-1],a[i-1][j]);
}
}
//第一个点是已知点
r[1] = b[n][m];//最后一个点的值
k = 2;//第二个点开始探索
int x = n;
int y = m;
//截止到1 1点结束
while(x != 1 || y != 1){
//如果上面的大说明从上面来,否则从左边来
if(b[x-1][y] > b[x][y-1]){
r[k] = b[x-1][y];
x--;
} else{
r[k] = b[x][y-1];
y--;
}
k++;
}
//逆序输出结果
for(i = k-1;i >= 1;i--){
if(i != 1){
cout<<r[i]<<"-";
}else{
cout<<r[i]<<endl;
}
}
}
/**************************************************************
Problem: 1374
User: admin
Language: C++
Result: Accepted
Time:14 ms
Memory:2084 kb
****************************************************************/