#include #include #include using namespace std; #define REP(i,n) for (int i=0;i<(n);i++) #define MOD 1000000007 int add(int); bool friends[35]={}; int main(){ int H,W,K,P; int x[35],y[35]; char N[21][12]; long long int dp[35][35]={}; long long int max=0; int e=0; bool max_friends[35]={}; cin >> H >> W >> K >> P; REP(i,K){cin>>x[i]>>y[i]>>N[i];} while(friends[K]==0){ REP(i,K){e+=friends[i];} if(e<=P){ REP(i,H+1){ REP(j,W+1){ dp[i][j]= -1; } } dp[0][0]=1; REP(i,K){if(friends[i]==0){dp[x[i]][y[i]] = 0;}} REP(i,H+1){ REP(j,W+1){ if(dp[i][j]==-1){ if(i==0 && dp[0][j-1]!=0){ dp[i][j]=1; }else if(j==0 && dp[i-1][0]!=0){ dp[i][j]=1; }else if(i!=0 && j!=0){ dp[i][j] = dp[i-1][j]+dp[i][j-1]; }else{ dp[i][j]=0; } } } } //REP(i,H+1){REP(j,W+1){cout<max){ max=dp[H][W]; REP(i,K){max_friends[i]=friends[i];} //cout << max << endl; } } e=0; add(0); } cout << max % MOD <