#include <bits/stdc++.h>
using namespace std;
pair<int, int> mx[105][105];
void solve() {
  int n, m, q;
  scanf("%d%d%d", &n, &m, &q);
  for (int i(0), _l((int)(n)-1); i <= _l; ++i)
    for (int j(0), _l((int)(m)-1); j <= _l; ++j) mx[i][j] = make_pair(i, j);
  map<pair<int, int>, int> values;
  for (int i(0), _l((int)(q)-1); i <= _l; ++i) {
    int t, x;
    scanf("%d%d", &t, &x);
    if (t == 1) {
      --x;
      for (int i(0), _l((int)(m - 1) - 1); i <= _l; ++i)
        swap(mx[x][i], mx[x][i + 1]);
    } else if (t == 2) {
      --x;
      for (int i(0), _l((int)(n - 1) - 1); i <= _l; ++i)
        swap(mx[i][x], mx[i + 1][x]);
    } else if (t == 3) {
      int y, v;
      scanf("%d%d", &y, &v);
      --x, --y;
      values[mx[x][y]] = v;
    }
  }
  for (int i(0), _l((int)(n)-1); i <= _l; ++i) {
    for (int j(0), _l((int)(m)-1); j <= _l; ++j) {
      int v(values.count(make_pair(i, j)) ? values[make_pair(i, j)] : 0);
      printf("%d%c", v, j + 1 == m ? '\n' : ' ');
    }
  }
}
int main() {
  solve();
  return 0;
}
