| 记录编号 | 
        608013 | 
        评测结果 | 
        AAAAAAAAAAAAAAAAAAAA | 
    
    
        | 题目名称 | 
        4025.正负游戏 | 
        最终得分 | 
        100 | 
            
    
    
        | 用户昵称 | 
         梦那边的美好ME | 
        是否通过 | 
        通过 | 
    
    
        | 代码语言 | 
        C++ | 
        运行时间 | 
        0.111 s  | 
    
    
        | 提交时间 | 
        2025-10-22 15:09:32 | 
        内存使用 | 
        5.50 MiB  | 
        
    
    
    
    		显示代码纯文本
		
		#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod=998244353;
ll n,m,k;
vector<ll>rowc,rown,colc,coln;
ll mpow(ll a,ll b){
    ll res=1;
    while(b>0){
        if(b&1)res=res*a%mod;
        a=a*a%mod;
        b>>=1;
    }
    return res;
}
int main(){
	freopen("plusminus.in","r",stdin);
	freopen("plusminus.out","w",stdout);
//	freopen("in.in","r",stdin);
    scanf("%lld %lld %lld",&n,&m,&k);
    if((n%2)!=(m%2)){
        printf("0\n");
        return 0;
    }
    rowc.resize(n+1,0);
    rown.resize(n+1,0);
    colc.resize(m+1,0);
    coln.resize(m+1,0);
    bool possible=1;
    for(int i=1;i<=k;i++){
        ll x,y,z;
        scanf("%lld %lld %lld",&x,&y,&z);
        rowc[x]++;
        colc[y]++;
        if(z==-1){
            rown[x]++;
            coln[y]++;
        }
        if(rowc[x]==m&&rown[x]%2==0){
            possible=0;
        }
        if(colc[y]==n&&coln[y]%2==0){
            possible=0;
        }
    }
    
    if(!possible){
        printf("0\n");
        return 0;
    }
    
    ll num=(n-1)*(m-1)-k;
    printf("%lld\n",mpow(2,num));
    return 0;
}