#include<iostream>
#include<algorithm>
using namespace std;

int t[100][50];
int dp[100][50];
string str;
int id,size;
int line;

int get_dp(int y,int x){
  if(0<=y&&y<100&&0<=x&&x<50)return dp[y][x];
  else return 0;
}

bool check(){
  return (id<size);
}

int get_int(){
  int res=0;
  while(1){
    if('0'<=str[id]&&str[id]<='9'){
      res*=10;
      res+=str[id]-'0';
      id++;
    }else{
      id++;
      break;
    }
  }
  return res;
}

int main(){
  int I=0,J,ans=0;


  for(int i=0;i<100;i++)
    for(int j=0;j<50;j++)
      t[i][j]=dp[i][j]=0;

  while(cin>>str){
    J=0;size=str.size();id=0;
    while(check()){
      t[I][J]=get_int();
      //cout<<t[I][J]<<endl;
      J++;
    }
    I++;
  }
  line=I/2;
  for(int i=0;i<100;i++){
    for(int j=0;j<50;j++){
      //cout<<t[i][j]<<" ";
      if(i<=line)dp[i][j]=max(get_dp(i-1,j-1),get_dp(i-1,j));
      else dp[i][j]=max(get_dp(i-1,j+1),get_dp(i-1,j));
      dp[i][j]+=t[i][j];
      ans=max(ans,dp[i][j]);
      //printf("%2d ",dp[i][j]);
    }
    //cout<<endl;
  }
  cout<<ans<<endl;

  
  return 0;
}