import sys
input = sys.stdin.readline
def main(R,C,K,rcv):
  inf=float('inf')
  dp0=[[-inf,-inf,-inf,0] for _ in range(C)]
  item=[[0]*C for _ in range(R)]
  for r,c,v in rcv:
    item[r-1][c-1]=v
  # dp0[c][j]:c列目の時点で残りちょうどj個取れる時の最大値
  for i in range(R):
    # i+1行目に対する操作
    # 遷移
    for j in range(C):
      if j>0:
        dp0[j][3]=max(dp0[j])
        dp0[j][0]=dp0[j-1][0]
        dp0[j][1]=dp0[j-1][1]
        dp0[j][2]=dp0[j-1][2]
      else:
        dp0[0][3]=max(dp0[0])
        dp0[0][2]=-inf
        dp0[0][1]=-inf
        dp0[0][0]=-inf 
      if item[i][j]>0:
        v=item[i][j]
        dp0[j][0]=max(dp0[j][0],dp0[j][1]+v)
        dp0[j][1]=max(dp0[j][1],dp0[j][2]+v)
        dp0[j][2]=max(dp0[j][2],dp0[j][3]+v)
  print(max(dp0[-1]))
if __name__=='__main__':
  R,C,K=map(int,input().split())
  rcv=[list(map(int,input().split())) for _ in range(K)]
  main(R,C,K,rcv) import sys sys input = sys.stdin.readline input sys.stdin.readline sys.stdin sys stdin readline def main(R,C,K,rcv):
  inf=float('inf')
  dp0=[[-inf,-inf,-inf,0] for _ in range(C)]
  item=[[0]*C for _ in range(R)]
  for r,c,v in rcv:
    item[r-1][c-1]=v
  # dp0[c][j]:c列目の時点で残りちょうどj個取れる時の最大値
  for i in range(R):
    # i+1行目に対する操作
    # 遷移
    for j in range(C):
      if j>0:
        dp0[j][3]=max(dp0[j])
        dp0[j][0]=dp0[j-1][0]
        dp0[j][1]=dp0[j-1][1]
        dp0[j][2]=dp0[j-1][2]
      else:
        dp0[0][3]=max(dp0[0])
        dp0[0][2]=-inf
        dp0[0][1]=-inf
        dp0[0][0]=-inf 
      if item[i][j]>0:
        v=item[i][j]
        dp0[j][0]=max(dp0[j][0],dp0[j][1]+v)
        dp0[j][1]=max(dp0[j][1],dp0[j][2]+v)
        dp0[j][2]=max(dp0[j][2],dp0[j][3]+v)
  print(max(dp0[-1])) main inf=float('inf') inf float('inf') float 'inf' [-inf,-inf,-inf,0] for _ in range(C) for _ in range(C) _ range(C) range C for _ in range(C) [-inf,-inf,-inf,0] -inf inf -inf inf -inf inf 0 dp0=[[-inf,-inf,-inf,0] for _ in range(C)] dp0 [[-inf,-inf,-inf,0] for _ in range(C)] [0]*C for _ in range(R) for _ in range(R) _ range(R) range R for _ in range(R) [0]*C [0] 0 C item=[[0]*C for _ in range(R)] item [[0]*C for _ in range(R)] for r,c,v in rcv:
    item[r-1][c-1]=v
  # dp0[c][j]:c列目の時点で残りちょうどj個取れる時の最大値
   r c v rcv item[r-1][c-1]=v item[r-1][c-1] [r-1] item r-1 r 1 c-1 c 1 v for i in range(R):
    # i+1行目に対する操作
    # 遷移
    for j in range(C):
      if j>0:
        dp0[j][3]=max(dp0[j])
        dp0[j][0]=dp0[j-1][0]
        dp0[j][1]=dp0[j-1][1]
        dp0[j][2]=dp0[j-1][2]
      else:
        dp0[0][3]=max(dp0[0])
        dp0[0][2]=-inf
        dp0[0][1]=-inf
        dp0[0][0]=-inf 
      if item[i][j]>0:
        v=item[i][j]
        dp0[j][0]=max(dp0[j][0],dp0[j][1]+v)
        dp0[j][1]=max(dp0[j][1],dp0[j][2]+v)
        dp0[j][2]=max(dp0[j][2],dp0[j][3]+v)
   i range(R) range R for j in range(C):
      if j>0:
        dp0[j][3]=max(dp0[j])
        dp0[j][0]=dp0[j-1][0]
        dp0[j][1]=dp0[j-1][1]
        dp0[j][2]=dp0[j-1][2]
      else:
        dp0[0][3]=max(dp0[0])
        dp0[0][2]=-inf
        dp0[0][1]=-inf
        dp0[0][0]=-inf 
      if item[i][j]>0:
        v=item[i][j]
        dp0[j][0]=max(dp0[j][0],dp0[j][1]+v)
        dp0[j][1]=max(dp0[j][1],dp0[j][2]+v)
        dp0[j][2]=max(dp0[j][2],dp0[j][3]+v)
   j range(C) range C if j>0:
        dp0[j][3]=max(dp0[j])
        dp0[j][0]=dp0[j-1][0]
        dp0[j][1]=dp0[j-1][1]
        dp0[j][2]=dp0[j-1][2]
      else:
        dp0[0][3]=max(dp0[0])
        dp0[0][2]=-inf
        dp0[0][1]=-inf
        dp0[0][0]=-inf 
       j>0 j 0 dp0[j][3]=max(dp0[j]) dp0[j][3] [j] dp0 j 3 max(dp0[j]) max dp0[j] dp0 j dp0[j][0]=dp0[j-1][0] dp0[j][0] [j] dp0 j 0 dp0[j-1][0] [j-1] dp0 j-1 j 1 0 dp0[j][1]=dp0[j-1][1] dp0[j][1] [j] dp0 j 1 dp0[j-1][1] [j-1] dp0 j-1 j 1 1 dp0[j][2]=dp0[j-1][2] dp0[j][2] [j] dp0 j 2 dp0[j-1][2] [j-1] dp0 j-1 j 1 2 dp0[0][3]=max(dp0[0]) dp0[0][3] [0] dp0 0 3 max(dp0[0]) max dp0[0] dp0 0 dp0[0][2]=-inf dp0[0][2] [0] dp0 0 2 -inf inf dp0[0][1]=-inf dp0[0][1] [0] dp0 0 1 -inf inf dp0[0][0]=-inf dp0[0][0] [0] dp0 0 0 -inf inf if item[i][j]>0:
        v=item[i][j]
        dp0[j][0]=max(dp0[j][0],dp0[j][1]+v)
        dp0[j][1]=max(dp0[j][1],dp0[j][2]+v)
        dp0[j][2]=max(dp0[j][2],dp0[j][3]+v)
   item[i][j]>0 item[i][j] [i] item i j 0 v=item[i][j] v item[i][j] [i] item i j dp0[j][0]=max(dp0[j][0],dp0[j][1]+v) dp0[j][0] [j] dp0 j 0 max(dp0[j][0],dp0[j][1]+v) max dp0[j][0] [j] dp0 j 0 dp0[j][1]+v dp0[j][1] [j] dp0 j 1 v dp0[j][1]=max(dp0[j][1],dp0[j][2]+v) dp0[j][1] [j] dp0 j 1 max(dp0[j][1],dp0[j][2]+v) max dp0[j][1] [j] dp0 j 1 dp0[j][2]+v dp0[j][2] [j] dp0 j 2 v dp0[j][2]=max(dp0[j][2],dp0[j][3]+v) dp0[j][2] [j] dp0 j 2 max(dp0[j][2],dp0[j][3]+v) max dp0[j][2] [j] dp0 j 2 dp0[j][3]+v dp0[j][3] [j] dp0 j 3 v print(max(dp0[-1])) print max(dp0[-1]) max dp0[-1] dp0 -1 R R C C K K rcv rcv if __name__=='__main__':
  R,C,K=map(int,input().split())
  rcv=[list(map(int,input().split())) for _ in range(K)]
  main(R,C,K,rcv) __name__=='__main__' __name__ '__main__' R,C,K=map(int,input().split()) R map(int,input().split()) map int input().split() ().split () input split C K list(map(int,input().split())) for _ in range(K) for _ in range(K) _ range(K) range K for _ in range(K) list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split rcv=[list(map(int,input().split())) for _ in range(K)] rcv [list(map(int,input().split())) for _ in range(K)] main(R,C,K,rcv) main R C K rcv rcv=[list(map(int,input().split())) for _ in range(K)] [list(map(int,input().split())) for _ in range(K)] rcv def main(R,C,K,rcv):
  inf=float('inf')
  dp0=[[-inf,-inf,-inf,0] for _ in range(C)]
  item=[[0]*C for _ in range(R)]
  for r,c,v in rcv:
    item[r-1][c-1]=v
  # dp0[c][j]:c列目の時点で残りちょうどj個取れる時の最大値
  for i in range(R):
    # i+1行目に対する操作
    # 遷移
    for j in range(C):
      if j>0:
        dp0[j][3]=max(dp0[j])
        dp0[j][0]=dp0[j-1][0]
        dp0[j][1]=dp0[j-1][1]
        dp0[j][2]=dp0[j-1][2]
      else:
        dp0[0][3]=max(dp0[0])
        dp0[0][2]=-inf
        dp0[0][1]=-inf
        dp0[0][0]=-inf 
      if item[i][j]>0:
        v=item[i][j]
        dp0[j][0]=max(dp0[j][0],dp0[j][1]+v)
        dp0[j][1]=max(dp0[j][1],dp0[j][2]+v)
        dp0[j][2]=max(dp0[j][2],dp0[j][3]+v)
  print(max(dp0[-1])) def main(R,C,K,rcv):
  inf=float('inf')
  dp0=[[-inf,-inf,-inf,0] for _ in range(C)]
  item=[[0]*C for _ in range(R)]
  for r,c,v in rcv:
    item[r-1][c-1]=v
  # dp0[c][j]:c列目の時点で残りちょうどj個取れる時の最大値
  for i in range(R):
    # i+1行目に対する操作
    # 遷移
    for j in range(C):
      if j>0:
        dp0[j][3]=max(dp0[j])
        dp0[j][0]=dp0[j-1][0]
        dp0[j][1]=dp0[j-1][1]
        dp0[j][2]=dp0[j-1][2]
      else:
        dp0[0][3]=max(dp0[0])
        dp0[0][2]=-inf
        dp0[0][1]=-inf
        dp0[0][0]=-inf 
      if item[i][j]>0:
        v=item[i][j]
        dp0[j][0]=max(dp0[j][0],dp0[j][1]+v)
        dp0[j][1]=max(dp0[j][1],dp0[j][2]+v)
        dp0[j][2]=max(dp0[j][2],dp0[j][3]+v)
  print(max(dp0[-1])) main input = sys.stdin.readline sys.stdin.readline input C,K=map(int,input().split()) map(int,input().split()) C R,C,K=map(int,input().split()) map(int,input().split()) R K=map(int,input().split()) map(int,input().split()) K
import sys
input = sys.stdin.readline
def main(R,C,K,rcv):
  inf=float('inf')
  dp0=[[-inf,-inf,-inf,0] for _ in range(C)]
  item=[[0]*C for _ in range(R)]
  for r,c,v in rcv:
    item[r-1][c-1]=v
  # dp0[c][j]:c列目の時点で残りちょうどj個取れる時の最大値
  for i in range(R):
    # i+1行目に対する操作
    # 遷移
    for j in range(C):
      if j>0:
        dp0[j][3]=max(dp0[j])
        dp0[j][0]=dp0[j-1][0]
        dp0[j][1]=dp0[j-1][1]
        dp0[j][2]=dp0[j-1][2]
      else:
        dp0[0][3]=max(dp0[0])
        dp0[0][2]=-inf
        dp0[0][1]=-inf
        dp0[0][0]=-inf 
      if item[i][j]>0:
        v=item[i][j]
        dp0[j][0]=max(dp0[j][0],dp0[j][1]+v)
        dp0[j][1]=max(dp0[j][1],dp0[j][2]+v)
        dp0[j][2]=max(dp0[j][2],dp0[j][3]+v)
  print(max(dp0[-1]))
if __name__=='__main__':
  R,C,K=map(int,input().split())
  rcv=[list(map(int,input().split())) for _ in range(K)]
  main(R,C,K,rcv)
