#include<bits/stdc++.h>
using namespace std;
const int MAX_NM=200005;
int n,m,max_line[MAX_NM],max_row[MAX_NM];
bool flag_line[MAX_NM],flag_row[MAX_NM];
int find(){
int ans=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(max_row[j]==max_line[i]){
ans++;
flag_row[j]=true;
flag_line[i]=true;
}
return ans;
}
int q,a,ans=0;
void cxk(){
for(int i=1;i<=n;i++)
max_line[i]=INT_MIN;
for(int i=1;i<=m;i++)
max_row[i]=INT_MIN;
}
int main(){
cin>>n>>m>>q;
cxk();
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
cin>>a;
max_line[i]=max(max_line[i],a);
max_row[j]=max(max_row[j],a);
}
int x,y,t;
ans=find();
while(q--){
cin>>x>>y>>t;
max_row[y]=max(max_row[y],t);
max_line[x]=max(max_line[x],t);
if(max_row[y]==max_line[x]&&!flag_row[y]&&!flag_line[x]){
ans++;
flag_line[x]=true;
flag_row[y]=true;
}
cout<<ans<<'\n';
}
return 0;
}