#include <bits/stdc++.h>
const double PI = acos(-1.0);
const long long INF = (((long long)1) << 62) + 1;
using namespace std;
const int maxn = 5005;
pair<int, int> r[maxn], c[maxn];
inline int read() {
  char c = getchar();
  while (!(c >= '0' && c <= '9')) c = getchar();
  int x = 0;
  while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
  return x;
}
int buf[15];
inline void put(int i) {
  int p = 0;
  if (i == 0) {
    putchar('0');
    putchar(' ');
    return;
  } else
    while (i) buf[p++] = i % 10, i /= 10;
  for (int j = p - 1; j >= 0; j--) putchar('0' + buf[j]);
  putchar(' ');
}
int main() {
  int n, m, k;
  n = read(), m = read(), k = read();
  for (int i = 1; i <= n; i++) r[i] = make_pair(0, 0);
  for (int i = 1; i <= m; i++) c[i] = make_pair(0, 0);
  for (int i = 1; i <= k; i++) {
    int x, y, z;
    x = read(), y = read(), z = read();
    if (x == 1)
      r[y] = make_pair(z, i);
    else
      c[y] = make_pair(z, i);
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++)
      if (r[i].first == 0 && c[j].first == 0)
        put(0);
      else if (r[i].first == 0)
        put(c[j].first);
      else if (c[j].first == 0)
        put(r[i].first);
      else if (r[i].second > c[j].second)
        put(r[i].first);
      else
        put(c[j].first);
    putchar('\n');
  }
  return 0;
}
