R,C,K = gets.chomp.split(" ").map(&:to_i)
r,c,v = K.times.map{gets.split.map(&:to_i)}.transpose
value = Array.new(R){Array.new(C,0)}
K.times do |i|
  value[r[i]-1][c[i]-1] = v[i]
end
#２つのdp配列を使いまわす
dp0 = Array.new(C+1){Array.new(4,0)}
dp1 = Array.new(C+1){Array.new(4,0)}
R.times do |i|
  C.times do |j|
    #今いるマスを1つずつ処理
    v = value[i][j]
    if v != 0
      #もらうDP、やる必要のない処理(1つもアイテムを取得してないのに3を計算するみたいな)も入ってる
      dp0[j][3] = [dp0[j][3],dp0[j][2]+v].max
      dp0[j][2] = [dp0[j][2],dp0[j][1]+v].max
      dp0[j][1] = [dp0[j][1],dp0[j][0]+v].max
    end
    #次の行にうつるとき、その列での最大値を渡す
    dp1[j][0] = dp0[j].max
    #次のマスへの受け渡し
    dp0[j+1][0] = dp0[j][0] if dp0[j+1][0] < dp0[j][0] #0の遷移のときは列も考慮する必要がある
    dp0[j+1][1] = dp0[j][1]
    dp0[j+1][2] = dp0[j][2]
    dp0[j+1][3] = dp0[j][3]
  end
  #配列の使いまわし
  dp0,dp1 = dp1,dp0
end
puts dp0[C-1][0]