#include <bits/stdc++.h>
using namespace std;
int n, m;
int q;
int a[100][100];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> m >> q;
  struct op {
    int t;
    int x, y, v;
  };
  vector<op> v;
  for (int i = 0; i < q; i++) {
    op t;
    cin >> t.t;
    if (t.t < 3)
      cin >> t.x;
    else
      cin >> t.x >> t.y >> t.v;
    t.x--, t.y--;
    v.push_back(t);
  }
  reverse(v.begin(), v.end());
  for (op i : v) {
    if (i.t == 3)
      a[i.x][i.y] = i.v;
    else if (i.t == 1) {
      int x = a[i.x][m - 1];
      for (int j = m - 1; j > 0; j--) a[i.x][j] = a[i.x][j - 1];
      a[i.x][0] = x;
    } else {
      int x = a[n - 1][i.x];
      for (int j = n - 1; j > 0; j--) a[j][i.x] = a[j - 1][i.x];
      a[0][i.x] = x;
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) cout << a[i][j] << ' ';
    cout << '\n';
  }
  return 0;
}
