Range Sum Query 2D - Immutable

class NumMatrix:

    def __init__(self, matrix: List[List[int]]):
        nR = len(matrix)
        nC = len(matrix[0])
        m = [[0] * (1 + nC) for _ in range(1 + nR)]
        for rx in range(1, 1 + nR, 1):
            for cx in range(1, 1 + nC, 1):
                tsum = m[rx - 1][cx]
                lsum = m[rx][cx - 1]
                tl = m[rx - 1][cx - 1]
                m[rx][cx] = matrix[rx - 1][cx - 1] + tsum + lsum - tl
        self.m = m

    def sumRegion(self, row1: int, col1: int, row2: int, col2: int) -> int:
        tsum = self.m[row1][1 + col2]
        lsum = self.m[1 + row2][col1]
        tl = self.m[row1][col1]
        return self.m[1 + row2][1 + col2] - tsum - lsum + tl