using namespace std ;
typedef long long int ll ;
ll h , w , m , k ;
map<ll,ll> ylsl ;
int main ( ) {
cin >> h >> w >> m ;
int h01[h] ; ll sh01 ;
int w01[w] ; ll sw01 ;
fill ( h01 , h01 + h , 0 ) ; sh01 = 0 ;
fill ( w01 , w01 + w , 0 ) ; sw01 = 0 ;
ll cz[m][3] ;
for ( ll i = 0 ; i < m ; i ++ ) {
cin >> cz[i][0] >> cz[i][1] >> cz[i][2] ;
cz[i][1] -- ; ylsl[cz[i][2]] = 0 ;
}
for ( ll i = m - 1 ; i >= 0 ; i -- ) {
if ( cz[i][0] == 1 ) {
if ( h01[cz[i][1]] == 0 ) {
h01[cz[i][1]] = 1 ;
sh01 ++ ;
if ( w > sw01 ) {
ylsl[cz[i][2]] += w - sw01 ;
}
}
}else {
if ( w01[cz[i][1]] == 0 ) {
w01[cz[i][1]] = 1 ;
sw01 ++ ;
if ( h > sh01 ) {
ylsl[cz[i][2]] += h - sh01 ;
}
}
}
}
ylsl[0] += ( h - sh01 ) * ( w - sw01 ) ;
for ( auto i : ylsl ) k += ( i.second > 0 ) ;
cout << k << endl ;
for ( auto i : ylsl ) {
if ( i.second ) {
cout << i.first << " " << i.second << endl ;
}
}
return 0 ;
}