#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(void)
{
	char buf[200];
	int a[100][51],dp[100][51];
	int i,j,k,x,p,n,flg,len;
	i=0;
	while(scanf("%s",buf)!=EOF)	{
		len=strlen(buf);
		j=0;	p=0;
		while(p<len)	{
			if(buf[p+1]==',' || p+1>=len)	{
				a[i][j]=buf[p]-'0';
				p+=2;
			}
			else {
				a[i][j]=(buf[p]-'0')*10+(buf[p+1]-'0');
				p+=3;
			}
			j++;
		}
		i++;
	}
	n=i;
	for(i=0;i<n;i++)	{
		for(j=0;j<=n/2;j++)	{
			dp[i][j]=0;
		}
	}
	dp[0][0]=a[0][0];
	for(i=0;i<n/2;i++)	{
		for(j=0;j<=i;j++)	{
			dp[i+1][j]=max(dp[i+1][j],dp[i][j]+a[i+1][j]);
			dp[i+1][j+1]=max(dp[i+1][j+1],dp[i][j]+a[i+1][j+1]);
		}
	}
	p=n/2+1;
	for(i=n/2;i<n-1;i++)	{
		for(j=0;j<=p;j++)	{
			if(j-1>=0)	{
				dp[i+1][j-1]=max(dp[i+1][j-1],dp[i][j]+a[i+1][j-1]);			
			}
			if(j<p)	{
				dp[i+1][j]=max(dp[i+1][j],dp[i][j]+a[i+1][j]);
			}
		}
		p--;
	}
	printf("%d\n",dp[n-1][0]);
	return 0;
}
