#include using namespace std; #define int long long #define rep(i,n) for(int i=0;i<(n);i++) #define pb push_back #define all(v) (v).begin(),(v).end() #define fi first #define se second typedef vectorvint; typedef pairpint; typedef vectorvpint; templateinline void chmin(A &a,B b){if(a>b)a=b;} templateinline void chmax(A &a,B b){if(a>i&1))ex[y[i]][x[i]]=1; fill_n(*dist,44*44,INT_MAX); dist[0][0]=0; way[0][0]=1; queueque; que.push({0,0}); while(que.size()){ int y,x; tie(y,x)=que.front(); que.pop(); if(ex[y][x]){ way[y][x]=0; continue; } rep(d,4){ int ny=y+dy[d]; int nx=x+dx[d]; if(ny<0||ny>H||nx<0||nx>W)continue; if(dist[ny][nx]==dist[y][x]+1){ way[ny][nx]+=way[y][x]; continue; } if(dist[ny][nx]!=INT_MAX)continue; dist[ny][nx]=dist[y][x]+1; way[ny][nx]=way[y][x]; que.push({ny,nx}); } } if(dist[H][W]!=H+W)return 0; return way[H][W]; } signed main(){ cin>>H>>W>>K>>P; rep(i,K)cin>>y[i]>>x[i]>>name[i]; int ma=0,arcma=0; rep(i,1<>j&1)pc++; if(pc>P)continue; int tmp=calc(i); if(ma>i&1)cout<