#include<bits/stdc++.h>
#define pb push_back
#define ll unsigned long long
#define maxn 5005
#define mod 5003
using namespace std;
int d,n,m,f[205][maxn],ans,siz[205][maxn];
ll hsh[maxn],mi[205];
unordered_map<ll,int>mp;
vector<int>to[205][maxn];
inline void hs(int u,int k,int fa){
ans-=mp[hsh[u]]*2-1,mp[hsh[u]]--;
if(!mp[hsh[u]])mp.erase(hsh[u]);
hsh[u]+=mi[k]*(fa-f[k][u]),f[k][u]=fa;
mp[hsh[u]]++,ans+=mp[hsh[u]]*2-1;
}
inline void dfs(int k,int u,int fa){hs(u,k,fa);for(int v:to[k][u])dfs(k,v,fa);}
inline void l(int k,int a,int b){
if(f[k][a]==f[k][b])return;
if(siz[k][f[k][a]]<siz[k][f[k][b]])swap(a,b);
siz[k][f[k][a]]+=siz[k][f[k][b]];
to[k][f[k][a]].pb(f[k][b]);
dfs(k,f[k][b],f[k][a]);
}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>d>>n>>m,mi[0]=1;
for(int i=1;i<=d;i++)mi[i]=mi[i-1]*mod;
for(int i=1;i<=d;i++)for(int j=1;j<=n;j++)f[i][j]=j,hsh[j]+=mi[i]*j;
ans=n;
for(int i=1;i<=n;i++)mp[hsh[i]]=1;
for(int a,b,k,i=1;i<=m;i++)cin>>a>>b>>k,l(k,a,b),cout<<ans<<'\n';
}