#include <bits/stdc++.h>
int read() {
  int s = 0, f = 1;
  char ch = getchar();
  for (; ch < '0' || ch > '9'; ch = getchar())
    if (ch == '-') f = -1;
  for (; '0' <= ch && ch <= '9'; ch = getchar()) s = s * 10 + ch - '0';
  return s * f;
}
const int N = 10001, M = 20001;
long long da[N], db[N], el[M], er[M];
int n, m, k, s1, s2, t;
int head[N], next[M], from[M], to[M], q[N * 64], cnt = 0;
bool vis[N];
void add(int u, int v, int l, int r) {
  next[++cnt] = head[u];
  from[cnt] = u;
  to[cnt] = v;
  el[cnt] = l;
  er[cnt] = r;
  head[u] = cnt;
}
void spfa(long long dis[N], int s) {
  memset(dis, 0x7f, sizeof(long long) * N);
  memset(vis, 0, sizeof vis);
  int f = 0, r = 0, i, u;
  q[r++] = s;
  dis[s] = 0;
  vis[s] = 1;
  while (f < r) {
    u = q[f++];
    for (i = head[u]; i; i = next[i]) {
      if (dis[to[i]] > dis[u] + er[i]) {
        dis[to[i]] = dis[u] + er[i];
        if (!vis[to[i]]) {
          q[r++] = to[i];
          vis[to[i]] = 1;
        }
      }
    }
    vis[u] = 0;
  }
}
bool check(int f) {
  int flag = 1, i;
  while (flag) {
    flag = 0;
    spfa(da, s1);
    spfa(db, s2);
    for (i = m + 1; i <= m + k; i++)
      if (da[from[i]] < db[from[i]] + f && el[i] != er[i])
        er[i] = el[i], flag = 1;
    if (da[t] < db[t] + f) {
      puts(f ? "DRAW" : "WIN");
      for (i = m + 1; i <= m + k; i++) printf("%d ", er[i]);
      return 1;
    }
  }
  return 0;
}
int main() {
  n = read(), m = read(), k = read();
  s1 = read(), s2 = read(), t = read();
  int i, x, y, z, l, r;
  for (i = 1; i <= m; i++) x = read(), y = read(), z = read(), add(x, y, z, z);
  for (i = 1; i <= k; i++)
    x = read(), y = read(), l = read(), r = read(), add(x, y, l, r);
  if (!check(0))
    if (!check(1)) puts("LOSE");
  return 0;
}
