import numpy as np
from numba import njit

R, C, K = map(int, input().split())
item = np.zeros((R, C), np.int_)
for _ in range(K):
    r, c, v = map(int, input().split())
    item[r-1,c-1] = v

@njit
def solve(R, C, K, item):
    DP = np.zeros((R, C, 4), np.int_)

    DP[0][0][1] = item[0][0]

    for i in range(R):
        for j in range(C):
            for k in range(4):
                if i > 0:  # 前の行から
                    DP[i,j,0] = max(DP[i,j,0], max(DP[i-1,j]))  # 取らない
                    DP[i,j,1] = max(DP[i,j,1], max(DP[i-1,j])+item[i,j])  # 取る

                if j > 0:  # 前の列から
                    DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k])  # 取らない
                    if k >= 1:
                        DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k-1]+item[i,j])  # 取る

    print(max(DP[R-1,C-1]))

solve(R, C, K, item) import numpy as np numpy from numba import njit R, C, K = map(int, input().split()) R map(int, input().split()) map int input().split() ().split () input split C K item = np.zeros((R, C), np.int_) item np.zeros((R, C), np.int_) np.zeros np zeros (R, C) R C np.int_ np int_ for _ in range(K):
    r, c, v = map(int, input().split())
    item[r-1,c-1] = v _ range(K) range K r, c, v = map(int, input().split()) r map(int, input().split()) map int input().split() ().split () input split c v item[r-1,c-1] = v item[r-1,c-1] item r-1 r 1 v def solve(R, C, K, item):
    DP = np.zeros((R, C, 4), np.int_)

    DP[0][0][1] = item[0][0]

    for i in range(R):
        for j in range(C):
            for k in range(4):
                if i > 0:  # 前の行から
                    DP[i,j,0] = max(DP[i,j,0], max(DP[i-1,j]))  # 取らない
                    DP[i,j,1] = max(DP[i,j,1], max(DP[i-1,j])+item[i,j])  # 取る

                if j > 0:  # 前の列から
                    DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k])  # 取らない
                    if k >= 1:
                        DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k-1]+item[i,j])  # 取る

    print(max(DP[R-1,C-1])) solve DP = np.zeros((R, C, 4), np.int_) DP np.zeros((R, C, 4), np.int_) np.zeros np zeros (R, C, 4) R C 4 np.int_ np int_ DP[0][0][1] = item[0][0] DP[0][0][1] [0] [0] DP 0 0 1 item[0][0] [0] item 0 0 for i in range(R):
        for j in range(C):
            for k in range(4):
                if i > 0:  # 前の行から
                    DP[i,j,0] = max(DP[i,j,0], max(DP[i-1,j]))  # 取らない
                    DP[i,j,1] = max(DP[i,j,1], max(DP[i-1,j])+item[i,j])  # 取る

                if j > 0:  # 前の列から
                    DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k])  # 取らない
                    if k >= 1:
                        DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k-1]+item[i,j])  # 取る

     i range(R) range R for j in range(C):
            for k in range(4):
                if i > 0:  # 前の行から
                    DP[i,j,0] = max(DP[i,j,0], max(DP[i-1,j]))  # 取らない
                    DP[i,j,1] = max(DP[i,j,1], max(DP[i-1,j])+item[i,j])  # 取る

                if j > 0:  # 前の列から
                    DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k])  # 取らない
                    if k >= 1:
                        DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k-1]+item[i,j])  # 取る

     j range(C) range C for k in range(4):
                if i > 0:  # 前の行から
                    DP[i,j,0] = max(DP[i,j,0], max(DP[i-1,j]))  # 取らない
                    DP[i,j,1] = max(DP[i,j,1], max(DP[i-1,j])+item[i,j])  # 取る

                if j > 0:  # 前の列から
                    DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k])  # 取らない
                    if k >= 1:
                        DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k-1]+item[i,j])  # 取る

     k range(4) range 4 if i > 0:  # 前の行から
                    DP[i,j,0] = max(DP[i,j,0], max(DP[i-1,j]))  # 取らない
                    DP[i,j,1] = max(DP[i,j,1], max(DP[i-1,j])+item[i,j])  # 取る

                 i > 0 i 0 DP[i,j,0] = max(DP[i,j,0], max(DP[i-1,j])) DP[i,j,0] DP i max(DP[i,j,0], max(DP[i-1,j])) max DP[i,j,0] DP i max(DP[i-1,j]) max DP[i-1,j] DP i-1 i 1 DP[i,j,1] = max(DP[i,j,1], max(DP[i-1,j])+item[i,j]) DP[i,j,1] DP i max(DP[i,j,1], max(DP[i-1,j])+item[i,j]) max DP[i,j,1] DP i max(DP[i-1,j])+item[i,j] max(DP[i-1,j]) max DP[i-1,j] DP i-1 i 1 item[i,j] item i if j > 0:  # 前の列から
                    DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k])  # 取らない
                    if k >= 1:
                        DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k-1]+item[i,j])  # 取る

     j > 0 j 0 DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k]) DP[i,j,k] DP i max(DP[i,j,k], DP[i,j-1,k]) max DP[i,j,k] DP i DP[i,j-1,k] DP i if k >= 1:
                        DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k-1]+item[i,j])  # 取る

     k >= 1 k 1 DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k-1]+item[i,j]) DP[i,j,k] DP i max(DP[i,j,k], DP[i,j-1,k-1]+item[i,j]) max DP[i,j,k] DP i DP[i,j-1,k-1]+item[i,j] DP[i,j-1,k-1] DP i item[i,j] item i print(max(DP[R-1,C-1])) print max(DP[R-1,C-1]) max DP[R-1,C-1] DP R-1 R 1 R R C C K K item item @njit solve njit solve solve(R, C, K, item) solve R C K item R, C, K = map(int, input().split()) map(int, input().split()) R r, c, v = map(int, input().split()) map(int, input().split()) r C, K = map(int, input().split()) map(int, input().split()) C K = map(int, input().split()) map(int, input().split()) K def solve(R, C, K, item):
    DP = np.zeros((R, C, 4), np.int_)

    DP[0][0][1] = item[0][0]

    for i in range(R):
        for j in range(C):
            for k in range(4):
                if i > 0:  # 前の行から
                    DP[i,j,0] = max(DP[i,j,0], max(DP[i-1,j]))  # 取らない
                    DP[i,j,1] = max(DP[i,j,1], max(DP[i-1,j])+item[i,j])  # 取る

                if j > 0:  # 前の列から
                    DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k])  # 取らない
                    if k >= 1:
                        DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k-1]+item[i,j])  # 取る

    print(max(DP[R-1,C-1])) def solve(R, C, K, item):
    DP = np.zeros((R, C, 4), np.int_)

    DP[0][0][1] = item[0][0]

    for i in range(R):
        for j in range(C):
            for k in range(4):
                if i > 0:  # 前の行から
                    DP[i,j,0] = max(DP[i,j,0], max(DP[i-1,j]))  # 取らない
                    DP[i,j,1] = max(DP[i,j,1], max(DP[i-1,j])+item[i,j])  # 取る

                if j > 0:  # 前の列から
                    DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k])  # 取らない
                    if k >= 1:
                        DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k-1]+item[i,j])  # 取る

    print(max(DP[R-1,C-1])) solve c, v = map(int, input().split()) map(int, input().split()) c v = map(int, input().split()) map(int, input().split()) v item = np.zeros((R, C), np.int_) np.zeros((R, C), np.int_) item
import numpy as np
from numba import njit

R, C, K = map(int, input().split())
item = np.zeros((R, C), np.int_)
for _ in range(K):
    r, c, v = map(int, input().split())
    item[r-1,c-1] = v

@njit
def solve(R, C, K, item):
    DP = np.zeros((R, C, 4), np.int_)

    DP[0][0][1] = item[0][0]

    for i in range(R):
        for j in range(C):
            for k in range(4):
                if i > 0:  # 前の行から
                    DP[i,j,0] = max(DP[i,j,0], max(DP[i-1,j]))  # 取らない
                    DP[i,j,1] = max(DP[i,j,1], max(DP[i-1,j])+item[i,j])  # 取る

                if j > 0:  # 前の列から
                    DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k])  # 取らない
                    if k >= 1:
                        DP[i,j,k] = max(DP[i,j,k], DP[i,j-1,k-1]+item[i,j])  # 取る

    print(max(DP[R-1,C-1]))

solve(R, C, K, item)