#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
#define MAX 100
#define NONE -1
int main()
{
  int N,data[MAX][MAX];
  string s;
  for(int i=0;i<MAX;i++)for(int j=0;j<MAX;j++)data[i][j]=NONE;
  for(int i=0;cin>>s;i++){
    int j=0;
    string words=" ,.";
    int k=0,start=0;
    for(;k<s.size();k++){
      if(words.find(s[k])!=string::npos){
	data[i][j]=atoi( s.substr(start,k-start).c_str() );
	j++;
	start=k+1;
      }
    }
    data[i][j]=atoi( s.substr(start,k-start).c_str() );
    N=i+1;
  }

  int dp[MAX][MAX]={0};
  dp[0][0]=data[0][0];
  for(int i=1;i<=N/2;i++){
    for(int j=0;data[i][j]!=NONE;j++){
      dp[i][j]=dp[i-1][j]+data[i][j];
      if(j>0 && dp[i][j]<dp[i-1][j-1]+data[i][j])dp[i][j]=dp[i-1][j-1]+data[i][j];
    }
  }
  for(int i=N/2+1;i<N;i++){
    for(int j=0;data[i][j]!=NONE;j++){
      dp[i][j]=dp[i-1][j]+data[i][j];
      if(j<MAX && dp[i][j]<dp[i-1][j+1]+data[i][j])dp[i][j]=dp[i-1][j+1]+data[i][j];
    }
  }

  cout<<dp[N-1][0]<<endl;
}