#include<bits/stdc++.h>
#define ll long long
#define N 200009
#define MOD 10000000000
using namespace std;
ll n,m,k,fa[N],x[N],y[N],col[N],g[N],t[2]={1,1},ans;
ll find(ll x){
if(x==fa[x]) return x;
ll u=find(fa[x]);
g[x]^=g[fa[x]];
return fa[x]=u;
}
ll find_ans(){
ll res=-1;
for(ll i=1;i<=n+m;i++) fa[i]=i,g[i]=0;
fa[n+1]=1;
for(ll i=1;i<=k;i++){
ll fx=find(x[i]),fy=find(y[i]+n);
ll temp=g[x[i]]^g[y[i]+n]^col[i];
if(fx!=fy) fa[fx]=fy,g[fx]=temp;
else if(temp) return 0;
}
for(ll i=1;i<=n+m;i++){
if(fa[i]==i){
if(res==-1) res=1;
else res<<=1;
res%=MOD;
}
}
return res;
}
int main(){
cin>>n>>m>>k;
for(ll i=1;i<=k;i++){
cin>>x[i]>>y[i]>>col[i];
if(x[i]==1&&y[i]==1) t[col[i]^1]=0,--k,--i;
else if(x[i]%2==0&&y[i]%2==0) col[i]^=1;
}
if(t[0]) ans=(ans+find_ans())%MOD;
if(t[1]){
for(ll i=1;i<=k;i++) if(x[i]>1&&y[i]>1) col[i]^=1;
ans=(ans+find_ans())%MOD;
}
ans%=MOD;
cout<<ans<<endl;
return 0;
}
//?
WA#3,#5,#7,#9,#11,#17,#18,#19