#include<bits/stdc++.h>

using namespace std;
#define int long long
const int N = 3333;
int dp[N][N][6];
/*dp(i,j,k)：当前位于 第 i 行,第 j 列,且当行已经取了第  k 个的最大值 */
int mp[N][N]={0};
int R,C,K;
int mc[N];
signed main(){
	cin>>R>>C>>K;
	int r,c,v;
	for(int i=1;i<=K;i++){
		cin>>r>>c>>v;
		mp[r][c]=v;
	}
	for(int i=1;i<=R;i++){
		for(int j=1;j<=C;j++){
			int sum=0;
			for(int k=0;k<=3;k++){
				sum=max(sum,dp[i-1][j][k]);
			}
			for(int k=1;k<=3;k++){
				dp[i][j][k]=max(max(dp[i][j-1][k],dp[i][j-1][k-1]+mp[i][j]),sum+mp[i][j]);	
			}
		}
	}
	
	int ans=0;
	for(int i=0;i<=3;i++){
		ans=max(ans,dp[R][C][i]);
	}  
	cout<<ans;
	return 0;
}