#include <bits/stdc++.h>
using namespace std;
int a[14][100010];
bitset<4096> b[100040];
int n, k;
pair<int, int> pa[14];
int main() {
  int q;
  scanf("%d%d%d", &n, &k, &q);
  int l = k;
  for (int i = 0; i < k; i++) {
    for (int j = 0; j < n; j++) {
      scanf("%d", &a[i][j]);
    }
    for (int j = 0; j < 4096; j++) {
      b[i][j] = j >> i & 1;
    }
  }
  while (q--) {
    int t, x, y;
    scanf("%d%d%d", &t, &x, &y);
    --x;
    --y;
    --t;
    if (t <= 1) {
      if (t == 0) {
        b[k] = b[x] & b[y];
      } else {
        b[k] = b[x] | b[y];
      }
      k++;
    } else {
      for (int i = 0; i < l; i++) {
        pa[i] = make_pair(a[i][y], i);
      }
      sort(pa, pa + l);
      int z = 0;
      for (int i = 0; i < l; i++) {
        z |= 1 << pa[i].second;
        if (b[x][z]) {
          printf("%d\n", pa[i].first);
          break;
        }
      }
    }
  }
  return 0;
}
