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

#define N 100

int main(void) {
	int v[N][N];
	int n = 0; //入力された行数
	
	string str;
	while(getline(cin, str)) {
		stringstream ss(str);
		string s;
		int i = 0; //行内の要素数
		while(getline(ss, s, ',')) {
			if(s.length() == 1) v[n][i] = s[0] - '0';
			else v[n][i] = (s[0] - '0') * 10 + (s[1] - '0');
			++i;
		}
		++n;
	}
	
	for(int i = 1; i <= n / 2; ++i) {
		for(int j = 0; j <= i; ++j) {
			if(j == 0) {
				v[i][j] += v[i - 1][j];
			} else if(j == i) {
				v[i][j] += v[i - 1][j - 1];
			} else {
				v[i][j] += max(v[i - 1][j], v[i - 1][j - 1]);
			}
		}
	}
	
	for(int i = n / 2 + 1; i < n; ++i) {
		for(int j = 0; j < n - i; ++j) {
			v[i][j] += max(v[i - 1][j], v[i - 1][j + 1]);
		}
	}
	
	cout << v[n - 1][0] << endl;
	
	return 0;
}
