#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[1010][1010], q[1010][1010]; int n, m; int perm[1010]; void bt(int at) { if (at == n) { rep(i,0,n) { cout << perm[i]+1 << endl; } exit(0); } rep(i,at,m) { swap(perm[i], perm[at]); bool ok = true; rep(j,0,at) { if (p[at][perm[j]] < p[j][perm[j]] && q[at][perm[j]] < q[at][perm[at]]) { ok = false; break; } if (p[j][perm[at]] < p[at][perm[at]] && q[j][perm[at]] < q[j][perm[j]]) { ok = false; break; } } if (ok) { bt(at+1); } swap(perm[i], perm[at]); } } int main() { cin >> n >> m; if (n > m) { cout << "impossible"; cout.flush(); 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; } } rep(i,0,m) { perm[i] = i; } bt(0); return 1; }