#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> piir;
typedef long long ll;
const int maxn = 1e6+5;
const int INF = 0x3f3f3f3f;
int sum1[maxn],ls1[maxn],rs1[maxn],cnt1,rt1;
int sum2[maxn],ls2[maxn],rs2[maxn],cnt2,rt2;
void update1(int &o,int l,int r,int ql,int qr){
if(!o) o=++cnt1;
if(sum1[o] == r-l+1) return ;
if(ql<=l && r<=qr){sum1[o]=r-l+1;return ;}
int m = (l+r)>>1;
if(ql <= m) update1(ls1[o],l,m,ql,qr);
if(qr > m) update1(rs1[o],m+1,r,ql,qr);
sum1[o] = sum1[ls1[o]] + sum1[rs1[o]];
}
void update2(int &o,int l,int r,int ql,int qr){
if(!o) o=++cnt2;
if(sum2[o] == r-l+1) return ;
if(ql<=l && r<=qr) {sum2[o]=r-l+1;return ;}
int m = (l+r)>>1;
if(ql<=m) update2(ls2[o],l,m,ql,qr);
if(qr>m) update2(rs2[o],m+1,r,ql,qr);
sum2[o] = sum2[ls2[o]] + sum2[rs2[o]];
}
int main() {
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif
int n,m,q,op,a,b;
while(~scanf("%d%d%d",&n,&m,&q)){
cnt1=cnt2=rt1=rt2;
while(q--){
ll ans = 0;
scanf("%d%d%d",&op,&a,&b);
if(op==1) update1(rt1,1,n,a,b);
else update2(rt2,1,m,a,b);
if(sum1[1] && sum2[1]) ans =1ll * (n-sum1[1])*(m-sum2[1]) +1;
else if(sum1[1]) ans = 1ll * (n-sum1[1]) * m + sum1[1];
else ans = 1ll * n *(m-sum2[1]) + sum2[1];
printf("%lld\n",ans);
}
for(int i=1;i<=cnt1;i++) sum1[i]=ls1[i]=rs1[i]=0;
for(int i=1;i<=cnt2;i++) sum2[i]=ls2[i]=rs2[i]=0;
}
return 0;
}