#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:256000000")
using namespace std;
const int INF = 1000001000;
const int mod = 1000 * 1000 * 1000 + 7;
const int mod9 = 1000 * 1000 * 1000 + 9;
const double PI = 3.1415926535897932;
double sqr(double first) { return first * first; };
long double sqr(long double first) { return first * first; };
long long sqr(long long first) { return first * first; };
long long sqr(int first) { return first * 1LL * first; };
long long gcd(long long a, long long b) {
  while (b) a %= b, swap(a, b);
  return a;
}
long long bpm(long long a, long long n = -2, long long m = mod) {
  n = n >= 0 ? n : m + n;
  long long r = 1;
  while (n) {
    if (n & 1) r = (r * a) % m;
    a = (a * a) % m;
    n >>= 1;
  }
  return r;
}
long long dist(long long x1, long long y1, long long x2, long long y2) {
  return sqr(x1 - x2) + sqr(y1 - y2);
}
std::ostream& operator<<(std::ostream& os, pair<int, int> p) {
  return os << "{" << p.first << " " << p.second << "}";
}
const int N = 202;
int a[N][N];
pair<int, int> c[N][N];
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  ;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      c[i][j] = pair<int, int>(i, j);
    }
  }
  int tests;
  scanf("%d", &tests);
  for (int test = 0; test < tests; test++) {
    int t;
    scanf("%d", &t);
    if (t == 1) {
      int first;
      scanf("%d", &first);
      first--;
      pair<int, int> f = c[first][0];
      for (int i = 0; i + 1 < m; i++) c[first][i] = c[first][i + 1];
      c[first][m - 1] = f;
    } else if (t == 2) {
      int first;
      scanf("%d", &first);
      first--;
      pair<int, int> f = c[0][first];
      for (int i = 0; i + 1 < n; i++) c[i][first] = c[i + 1][first];
      c[n - 1][first] = f;
    } else {
      int first, second, t;
      scanf("%d %d %d", &first, &second, &t);
      ;
      pair<int, int> d = c[first - 1][second - 1];
      a[d.first][d.second] = t;
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      printf("%d ", a[i][j]);
    }
    putchar('\n');
  }
  return 0;
}
