﻿/* Kaan Soral */
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAXN 2001

int N,M,DP[MAXN][MAXN],array[MAXN][MAXN],used[MAXN][MAXN];

int mx(int x,int y)
{
        return x>y?x:y;
}

int find(int x,int y)
{
        if(x>N || y>M) return 0;
        if(used[x][y]) return DP[x][y];
        used[x][y]=1;
        return DP[x][y]=array[x][y]+mx(find(x,y+1),find(x+1,y));
}

int main()
{
        int i,j;
        srand(time(NULL));
        scanf(" %d %d",&N,&M);
        FILE *output=fopen("park.cik2","w"),*input=fopen("park.gir","w");
        fprintf(input,"%d %d\n",N,M);
        for(i=1;i<=N;i++)
        {
                for(j=1;j<=M;j++)
                {
                        array[i][j]=rand()%201;
                        fprintf(input,"%d ",array[i][j]);
                }
                fprintf(input,"\n");
        }
        find(1,1);
        fprintf(output,"%d\n",DP[1][1]);
        fclose(input);
	fclose(output);
        return 0;
}
