#include <bits/stdc++.h>
using namespace std;
int const N = 141;
int const Q = 1e4 + 41;
int n, m, ma[N][N], q, t[Q], r[Q], c[Q], x[Q];
void rowL(int id) {
  int fi = ma[id][0];
  for (int i = 0; i < m - 1; ++i) {
    ma[id][i] = ma[id][i + 1];
  }
  ma[id][m - 1] = fi;
}
void rowR(int id) {
  int la = ma[id][m - 1];
  for (int i = m - 1; i > 0; --i) {
    ma[id][i] = ma[id][i - 1];
  }
  ma[id][0] = la;
}
void colL(int id) {
  int fi = ma[0][id];
  for (int i = 0; i < n - 1; ++i) {
    ma[i][id] = ma[i + 1][id];
  }
  ma[n - 1][id] = fi;
}
void colR(int id) {
  int la = ma[n - 1][id];
  for (int i = n - 1; i > 0; --i) {
    ma[i][id] = ma[i - 1][id];
  }
  ma[0][id] = la;
}
int main() {
  scanf("%d%d%d", &n, &m, &q);
  for (int i = 0; i < q; ++i) {
    scanf("%d", &t[i]);
    if (t[i] == 1) {
      scanf("%d", &r[i]);
      --r[i];
      rowL(r[i]);
    }
    if (t[i] == 2) {
      scanf("%d", &c[i]);
      --c[i];
      colL(c[i]);
    }
    if (t[i] == 3) {
      scanf("%d%d%d", &r[i], &c[i], &x[i]);
      --r[i];
      --c[i];
      ma[r[i]][c[i]] = x[i];
    }
  }
  for (int i = q - 1; i >= 0; --i) {
    if (t[i] == 3) {
      continue;
    }
    if (t[i] == 1) {
      rowR(r[i]);
    }
    if (t[i] == 2) {
      colR(c[i]);
    }
  }
  for (int i = 0; i < n; ++i) {
    if (i) {
      printf("\n");
    }
    for (int j = 0; j < m; ++j) {
      if (j) {
        printf(" ");
      }
      printf("%d", ma[i][j]);
    }
  }
  return 0;
}
