#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#define lol(i,n) for(int i=0;i<n;i++)
#define mod 1000000007
typedef long long ll;
using namespace std;
vector<int> v[110];
int dp[110][110];
int main(){
	int n=0,maxi=0;
	string z;
	while(cin>>z){
		z.push_back(',');
		int cnt=0;
		lol(i,z.size()){
			if(z[i]==','){
				v[n].push_back(cnt);
				cnt=0;
			}
			else{
				cnt*=10;
				cnt+=z[i]-'0';
			}
		}
		int tmp=v[n].size();
		maxi=max(maxi,tmp);
		n++;
	}
	lol(i,n)lol(j,maxi)dp[i][j]=0;
	lol(i,n-1)lol(j,v[i].size()){
			int tmp=dp[i][j]+v[i][j];
			if(i<maxi){
				dp[i+1][j]=max(dp[i+1][j],tmp);
				dp[i+1][j+1]=max(dp[i+1][j+1],tmp);
			}
			else{
				if(j+1<v[i].size())dp[i+1][j]=max(dp[i+1][j],tmp);
				if(j>0)dp[i+1][j-1]=max(dp[i+1][j-1],tmp);
			}
	}
	cout<<dp[n-1][0]+v[n-1][0]<<endl;
	return 0;
}