#include using namespace std; #define rep(i,a,b) for(int i=a;i friends; rep(i, 0, K) if (flag & (1 << i)) friends.push_back(i); if (friends.size() != P) return -1; rep(y, 0, H + 1) rep(x, 0, W + 1) B[y][x] = 0; rep(i, 0, K) B[X[i]][Y[i]] = 1; for (int i : friends) B[X[i]][Y[i]] = 0; rep(i, 0, 40) rep(j, 0, 40) cnt[i][j] = 0; cnt[0][0] = 1; rep(y, 0, H + 1) rep(x, 0, W + 1) if (!B[y][x]) { if (0 < x) cnt[y][x] += cnt[y][x - 1]; if (0 < y) cnt[y][x] += cnt[y - 1][x]; } return cnt[H][W]; } //----------------------------------------------------------------------------------- int main() { cin >> H >> W >> K >> P; rep(i, 0, K) cin >> X[i] >> Y[i] >> N[i]; ll ma = 0, ma_f = 0; rep(flag, 0, 1 << K) { ll c = count(flag); if (ma < c) { ma = c; ma_f = flag; } } cout << ma % mod << endl; rep(i, 0, K) if (ma_f & (1 << i)) cout << N[i] << endl; }