intmain() { freopen("numtri.in","r",stdin); freopen("numtri.out","w",stdout); int n ; cin >> n ; for( int i = 1 ; i <= n ; i++) for( int j = 1 ; j <= i ; j++) cin >> data[i][j] ;
dp[1][1] = data[1][1] ;
for( int i = 2 ; i <= n ; i++) { for( int j = 1 ; j <= i ; j++) { dp[i][j] = max(dp[i-1][j-1] , dp[i-1][j] ) + data[i][j] ; //注意边界问题 } }
int ans = 0 ;
for( int i = 1 ; i <= n ; i++) ans = max( dp[n][i] , ans ) ; cout << ans << endl ; return0 ; }
boolisprime( int n ) { if( n == 0 || n == 1 ) returnfalse ; if( n == 2 ) returntrue ; int sqrt_n = sqrt(n) ; for( int i = 2 ; i <= sqrt_n ; i++) if( n % i == 0 ) returnfalse ; returntrue ; }
intdigit( int n ) { int d = 0 ; while( n != 0 ) n/=10 , d++; return d ; }
voidf( int a , int b , int n ) { if( n >= a && n <= b && isprime( n ) ) cout << n << endl ; return ; }
intmain() { freopen("pprime.in","r",stdin); freopen("pprime.out","w",stdout); int a , b ; cin >> a >> b ; int d1 = digit(a) , d2 = digit(b) ; func( a , b , d1 , d2 ) ; return0 ; }
int ans = 0 ; boolisprime( int n ) { if( n == 0 || n == 1 ) returnfalse ; if( n == 2 ) returntrue ; for( int i = 2 ; i <= sqrt(n) ; i++) if( n % i == 0 ) returnfalse ; returntrue ; }
voiddfs( int n ) { if( n == 0 ) { cout << ans << endl ; }
for( int i = 1 ; i <= 9 ; i++) { int t = ans ; ans = i + ans * 10 ; if( isprime ( ans ) ) dfs( n - 1 ) ; ans = t ;
} }
intmain() { freopen("sprime.in","r",stdin); freopen("sprime.out","w",stdout); int n ; cin >> n ; ans = 0 ; dfs(n) ; return0 ; }