#include <iostream>
using namespace std;
const int maxn=100001;
int m,n,k;
int x[maxn],y[maxn],d[maxn];
int c[maxn];//每一列的数据个数 
int *a[maxn];//每一列一个指针，准备申请数组 

int main()
{
	cin>>n>>m>>k;
	for(int i=0;i<k;i++)
	{
		cin>>x[i]>>y[i]>>d[i];//读入行号、列号、值 
		c[y[i]]++;//统计c数组中每一列的数据个数 
	}
	for(int i=1;i<=m;i++)
	  a[i]=new int[c[i]];//每一列申请数组空间 
	for(int i=0;i<k;i++)//收集k个数据到相应的列 
	{
		*a[y[i]]=d[i];//数据存放在相应列的数组中 
		a[y[i]]++;//数组指针移动到下一个位置 
	}
	for(int i=1;i<=m;i++)//按列优先输出 
	{
		a[i]=a[i]-c[i];//每次指针回到当前列的前面 
		for(int j=0;j<c[i];j++,a[i]++)
		   cout<<*a[i]<<' ';
	}
	return 0;
}
