R,C,K = map(int,input().split()) #行、列、個数
G = [[0]*C for _ in range(R)] #G[i][j]でi行目のj番目にある価値
for i in range(K):
  a,b,v = map(int,input().split())
  a-=1;b-=1 #0index
  G[a][b] = v
#print(G)

dp = [[0]*4 for _ in range(C+1)]
#dp[j][k]ある行において、j個目まで見て、その行でk個拾っている
for i in range(R):
  p = [[0]*4 for _ in range(C+1)] #pが前の行、dpが今の行
  p,dp = dp,p
  for j in range(C):
    #print(j+1,dp)
    for k in range(4):
      if k == 0: #その行で一個も取っていなければ上の行から来るだけ
        dp[j+1][k] = max(p[j+1])
      elif k == 1: #一個目をとるということは横からきて取るか、上から来て取るか
        if G[i][j] == 0: #そこにない場合は横から
          dp[j+1][k] = dp[j][k]
        else: #ある場合は横からくるか上から来て一個取るか
          dp[j+1][k] = max(dp[j][k],max(p[j+1])+G[i][j])
      else: #二個以上の場合には上からは来れない。
        if G[i][j] == 0: #そこになければ横からくるだけ
          dp[j+1][k] = dp[j][k]
        else: #あればとったほうがよいか比較
          dp[j+1][k] = max(dp[j][k],dp[j][k-1]+G[i][j])
  #print(p,dp)

ans = max(dp[C])
print(ans) R,C,K = map(int,input().split()) R map(int,input().split()) map int input().split() ().split () input split C K [0]*C for _ in range(R) for _ in range(R) _ range(R) range R for _ in range(R) [0]*C [0] 0 C G = [[0]*C for _ in range(R)] G [[0]*C for _ in range(R)] for i in range(K):
  a,b,v = map(int,input().split())
  a-=1;b-=1 #0index
  G[a][b] = v
#print(G) i range(K) range K a,b,v = map(int,input().split()) a map(int,input().split()) map int input().split() ().split () input split b v a-=1 a 1 b-=1 b 1 G[a][b] = v G[a][b] [a] G a b v [0]*4 for _ in range(C+1) for _ in range(C+1) _ range(C+1) range C+1 C 1 for _ in range(C+1) [0]*4 [0] 0 4 dp = [[0]*4 for _ in range(C+1)] dp [[0]*4 for _ in range(C+1)] for i in range(R):
  p = [[0]*4 for _ in range(C+1)] #pが前の行、dpが今の行
  p,dp = dp,p
  for j in range(C):
    #print(j+1,dp)
    for k in range(4):
      if k == 0: #その行で一個も取っていなければ上の行から来るだけ
        dp[j+1][k] = max(p[j+1])
      elif k == 1: #一個目をとるということは横からきて取るか、上から来て取るか
        if G[i][j] == 0: #そこにない場合は横から
          dp[j+1][k] = dp[j][k]
        else: #ある場合は横からくるか上から来て一個取るか
          dp[j+1][k] = max(dp[j][k],max(p[j+1])+G[i][j])
      else: #二個以上の場合には上からは来れない。
        if G[i][j] == 0: #そこになければ横からくるだけ
          dp[j+1][k] = dp[j][k]
        else: #あればとったほうがよいか比較
          dp[j+1][k] = max(dp[j][k],dp[j][k-1]+G[i][j])
  #print(p,dp) i range(R) range R [0]*4 for _ in range(C+1) for _ in range(C+1) _ range(C+1) range C+1 C 1 for _ in range(C+1) [0]*4 [0] 0 4 p = [[0]*4 for _ in range(C+1)] p [[0]*4 for _ in range(C+1)] p,dp = dp,p p dp dp p for j in range(C):
    #print(j+1,dp)
    for k in range(4):
      if k == 0: #その行で一個も取っていなければ上の行から来るだけ
        dp[j+1][k] = max(p[j+1])
      elif k == 1: #一個目をとるということは横からきて取るか、上から来て取るか
        if G[i][j] == 0: #そこにない場合は横から
          dp[j+1][k] = dp[j][k]
        else: #ある場合は横からくるか上から来て一個取るか
          dp[j+1][k] = max(dp[j][k],max(p[j+1])+G[i][j])
      else: #二個以上の場合には上からは来れない。
        if G[i][j] == 0: #そこになければ横からくるだけ
          dp[j+1][k] = dp[j][k]
        else: #あればとったほうがよいか比較
          dp[j+1][k] = max(dp[j][k],dp[j][k-1]+G[i][j])
  #print(p,dp) j range(C) range C for k in range(4):
      if k == 0: #その行で一個も取っていなければ上の行から来るだけ
        dp[j+1][k] = max(p[j+1])
      elif k == 1: #一個目をとるということは横からきて取るか、上から来て取るか
        if G[i][j] == 0: #そこにない場合は横から
          dp[j+1][k] = dp[j][k]
        else: #ある場合は横からくるか上から来て一個取るか
          dp[j+1][k] = max(dp[j][k],max(p[j+1])+G[i][j])
      else: #二個以上の場合には上からは来れない。
        if G[i][j] == 0: #そこになければ横からくるだけ
          dp[j+1][k] = dp[j][k]
        else: #あればとったほうがよいか比較
          dp[j+1][k] = max(dp[j][k],dp[j][k-1]+G[i][j])
  #print(p,dp) k range(4) range 4 if k == 0: #その行で一個も取っていなければ上の行から来るだけ
        dp[j+1][k] = max(p[j+1])
      elif k == 1: #一個目をとるということは横からきて取るか、上から来て取るか
        if G[i][j] == 0: #そこにない場合は横から
          dp[j+1][k] = dp[j][k]
        else: #ある場合は横からくるか上から来て一個取るか
          dp[j+1][k] = max(dp[j][k],max(p[j+1])+G[i][j])
      else: #二個以上の場合には上からは来れない。
        if G[i][j] == 0: #そこになければ横からくるだけ
          dp[j+1][k] = dp[j][k]
        else: #あればとったほうがよいか比較
          dp[j+1][k] = max(dp[j][k],dp[j][k-1]+G[i][j])
  #print(p,dp) k == 0 k 0 dp[j+1][k] = max(p[j+1]) dp[j+1][k] [j+1] dp j+1 j 1 k max(p[j+1]) max p[j+1] p j+1 j 1 elif k == 1: #一個目をとるということは横からきて取るか、上から来て取るか
        if G[i][j] == 0: #そこにない場合は横から
          dp[j+1][k] = dp[j][k]
        else: #ある場合は横からくるか上から来て一個取るか
          dp[j+1][k] = max(dp[j][k],max(p[j+1])+G[i][j])
       k == 1 k 1 if G[i][j] == 0: #そこにない場合は横から
          dp[j+1][k] = dp[j][k]
        else: #ある場合は横からくるか上から来て一個取るか
          dp[j+1][k] = max(dp[j][k],max(p[j+1])+G[i][j])
       G[i][j] == 0 G[i][j] [i] G i j 0 dp[j+1][k] = dp[j][k] dp[j+1][k] [j+1] dp j+1 j 1 k dp[j][k] [j] dp j k dp[j+1][k] = max(dp[j][k],max(p[j+1])+G[i][j]) dp[j+1][k] [j+1] dp j+1 j 1 k max(dp[j][k],max(p[j+1])+G[i][j]) max dp[j][k] [j] dp j k max(p[j+1])+G[i][j] max(p[j+1]) max p[j+1] p j+1 j 1 G[i][j] [i] G i j if G[i][j] == 0: #そこになければ横からくるだけ
          dp[j+1][k] = dp[j][k]
        else: #あればとったほうがよいか比較
          dp[j+1][k] = max(dp[j][k],dp[j][k-1]+G[i][j])
  #print(p,dp) G[i][j] == 0 G[i][j] [i] G i j 0 dp[j+1][k] = dp[j][k] dp[j+1][k] [j+1] dp j+1 j 1 k dp[j][k] [j] dp j k dp[j+1][k] = max(dp[j][k],dp[j][k-1]+G[i][j]) dp[j+1][k] [j+1] dp j+1 j 1 k max(dp[j][k],dp[j][k-1]+G[i][j]) max dp[j][k] [j] dp j k dp[j][k-1]+G[i][j] dp[j][k-1] [j] dp j k-1 k 1 G[i][j] [i] G i j ans = max(dp[C]) ans max(dp[C]) max dp[C] dp C print(ans) print ans b,v = map(int,input().split()) map(int,input().split()) b G = [[0]*C for _ in range(R)] [[0]*C for _ in range(R)] G 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 p,dp = dp,p dp p ans = max(dp[C]) max(dp[C]) ans b-=1 1 b v = map(int,input().split()) map(int,input().split()) v dp = dp,p p dp dp = [[0]*4 for _ in range(C+1)] [[0]*4 for _ in range(C+1)] dp a,b,v = map(int,input().split()) map(int,input().split()) a a-=1 1 a p = [[0]*4 for _ in range(C+1)] [[0]*4 for _ in range(C+1)] p
R,C,K = map(int,input().split()) #行、列、個数
G = [[0]*C for _ in range(R)] #G[i][j]でi行目のj番目にある価値
for i in range(K):
  a,b,v = map(int,input().split())
  a-=1;b-=1 #0index
  G[a][b] = v
#print(G)

dp = [[0]*4 for _ in range(C+1)]
#dp[j][k]ある行において、j個目まで見て、その行でk個拾っている
for i in range(R):
  p = [[0]*4 for _ in range(C+1)] #pが前の行、dpが今の行
  p,dp = dp,p
  for j in range(C):
    #print(j+1,dp)
    for k in range(4):
      if k == 0: #その行で一個も取っていなければ上の行から来るだけ
        dp[j+1][k] = max(p[j+1])
      elif k == 1: #一個目をとるということは横からきて取るか、上から来て取るか
        if G[i][j] == 0: #そこにない場合は横から
          dp[j+1][k] = dp[j][k]
        else: #ある場合は横からくるか上から来て一個取るか
          dp[j+1][k] = max(dp[j][k],max(p[j+1])+G[i][j])
      else: #二個以上の場合には上からは来れない。
        if G[i][j] == 0: #そこになければ横からくるだけ
          dp[j+1][k] = dp[j][k]
        else: #あればとったほうがよいか比較
          dp[j+1][k] = max(dp[j][k],dp[j][k-1]+G[i][j])
  #print(p,dp)

ans = max(dp[C])
print(ans)