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();
}
}
}