#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
****************************************************************/