```cpp
#include <cstdio>
#define rr register
using namespace std;
inline int max(int a,int b){
return a>b? a:b;
}
inline int cmp(int a,int b,int c,int d){
return max(max(a,b),max(c,d));
}
inline int min(int a,int b){
return a<b?a:b;
}
int a[51][51];
int f[51][51][51];
int n,x,y,z;
int main(){
scanf("%d%d%d%d",&n,&x,&y,&z);;
while(x && y && z){
a[x][y] = z;
scanf("%d%d%d",&x,&y,&z);
}
f[1][1][1] = a[1][1];
for(int s = 2;s <= 2*n-1;s++){
for(int i = 1;i <= n;i++){
for(int j = 1;j <= n;j++){
f[s][i][j] = a[i][s-i+1]+cmp(f[s-1][i][j],f[s-1][i-1][j],f[s-1][i][j-1],f[s-1][i-1][j-1]);
if(i != j){
f[s][i][j] += a[j][s-j+1];
}
}
}
}
printf("%d",f[2*n-1][n][n]);
return 0;
}
```
@[ILMR_LBN](/user/865676)
by NaHCO3_tht @ 2023-11-10 13:42:24