#include using namespace std; #define rep(i,a,b) for (auto i=(a); i<(b); ++i) #define iter(it,c) for (auto it = (c).begin(); it != (c).end(); ++it) typedef pair ii; typedef vector vi; typedef vector vii; typedef vector vvi; typedef long long ll; const int INF = 2147483647; int p[5010][5010], q[5010][5010]; int main() { int n, m; cin >> n >> m; if (n > m) { cout << "impossible" << endl; return 0; } int d, e; cin >> d >> e; rep(i,0,n) { rep(j,0,m) { q[i][j] = d+1; } } vi cur(n, -1); rep(i,0,e) { int s, k, t; cin >> s >> k >> t; k--, t--; if (cur[k] != -1) { p[k][cur[k]] += s; } cur[k] = t; if (t != -1) { p[k][t] -= s; if (q[k][t] == d+1) { q[k][t] = s; } } } rep(i,0,n) { if (cur[i] != -1) { p[i][cur[i]] += d; } } vi perm(n); rep(i,0,n) perm[i] = i; do { bool ok = true; rep(i,0,n) { rep(j,0,n) { if (i == j) continue; if (p[i][perm[j]] < p[j][perm[j]] && q[i][perm[j]] < q[i][perm[i]]) { ok = false; break; } } if (!ok) { break; } } if (ok) { rep(i,0,n) { cout << perm[i]+1 << endl; } return 0; } } while (next_permutation(perm.begin(), perm.end())); return 1; }