//小学生按部就班,数组标记法
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int arr[5005][5005];
int b[5005]; //数组标记法 某个颜色是数组下标,统计某个颜色的数目
int main()
{
std::ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0); //提速使效率基本上和scanf printf 一致
cin>>n>>m>>k;
int x,y,c;
while( k-- ) { //*5000
cin>>x>>y>>c;
for(int i=0;i<m;i++) arr[x-1][i]=c; //*5000
for(int i=0;i<n;i++) arr[i][y-1]=c;//*5000
} //*5000 0000
for(int i=0;i<n;i++){
for( int j=0;j<m;j++) { //*2500 0000
int t=arr[i][j];
b[t]++;
}
}
int max=0,ans;
for(int i=1;i<=5000;i++){ //最多有5000种颜色 //*5000
if( b[i] >max) {
max=b[i];
ans=i;
}
}
cout<<max<<" "<<ans;
return 0; //7500 5000 < 1 0000 0000
}
//思维
//不难发现,无论选择哪个点涂色,都会覆盖 "n+m−1个格子",而且"必然会覆盖上一轮染色的部分点"
//由于每一次染色所用的"颜色都各不相同",那么最后一次染色的颜色面积最大
for (int i=1;i<=k;i++)
{
cin>>x>>y>>c;
}
cout<<n+m-1<<" "<<c; //c为最后一次输入的c