import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int m = sc.nextInt();
        int q = sc.nextInt();

        // 原始矩阵,1-based索引
        long[][] matrix = new long[n + 2][m + 2];
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                matrix[i][j] = sc.nextLong();
            }
        }

        // 二维差分矩阵
        long[][] diff = new long[n + 2][m + 2];

        // 处理所有更新操作
        for (int t = 0; t < q; t++) {
            int x1 = sc.nextInt();
            int y1 = sc.nextInt();
            int x2 = sc.nextInt();
            int y2 = sc.nextInt();
            long k = sc.nextLong();

            // 差分矩阵标记
            diff[x1][y1] += k;
            diff[x1][y2 + 1] -= k;
            diff[x2 + 1][y1] -= k;
            diff[x2 + 1][y2 + 1] += k;
        }

        // 计算行前缀和
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                diff[i][j] += diff[i][j - 1];
            }
        }

        // 计算列前缀和
        for (int j = 1; j <= m; j++) {
            for (int i = 1; i <= n; i++) {
                diff[i][j] += diff[i - 1][j];
            }
        }

        // 应用增量到原始矩阵
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                matrix[i][j] += diff[i][j];
            }
        }

        // 输出结果
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println();
        }
    }
}