human
Solve in Python:
Given a m * n matrix mat and an integer K, return a matrix answer where each answer[i][j] is the sum of all elements mat[r][c] for i - K <= r <= i + K, j - K <= c <= j + K, and (r, c) is a valid position in the matrix.
 
Example 1:
Input: mat = [[1,2,3],[4,5,6],[7,8,9]], K = 1
Output: [[12,21,16],[27,45,33],[24,39,28]]

Example 2:
Input: mat = [[1,2,3],[4,5,6],[7,8,9]], K = 2
Output: [[45,45,45],[45,45,45],[45,45,45]]

 
Constraints:

m == mat.length
n == mat[i].length
1 <= m, n, K <= 100
1 <= mat[i][j] <= 100
 ... Give me a the Python program you requested?
assistant
#Here is the Python program you requested.

from itertools import accumulate 
class Solution:
    def matrixBlockSum(self, mat: List[List[int]], K: int) -> List[List[int]]:
        A = mat.copy()
        for i in range(len(A)):
            A[i] = [0]+list(accumulate(A[i]))
        Ans = [[0 for i in range(len(A[0]))] for j in range(len(A))] 
        for i in range(len(A)):
            for j in range(1,len(A[0])):
                #print(max(0,i-K),min(len(A),i+K))
                for p in range(max(0,i-K),min(len(A)-1,i+K)+1):
                    #print(A[p],p)
                    #print(min(j+K,len(A[0])),max(0,j-K))
                    Ans[i][j] += A[p][min(j+K,len(A[0])-1)]-A[p][max(0,j-K-1)]
        for i in range(len(Ans)):
            Ans[i] = Ans[i][1:]
        return Ans