#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  for (; !isdigit(ch); ch = getchar())
    if (ch == '-') f = -1;
  for (; isdigit(ch); ch = getchar()) x = x * 10 + ch - '0';
  return x * f;
}
const int N = 100005;
struct Edge {
  int fr, to, nxt, l, r;
} e[N];
int head[N], vis[N], q[1000005];
long long d1[N], d2[N];
int n, m, k, s1, s2, t, En = 0;
void add_edge(int u, int v, int l, int r) {
  ++En;
  e[En] = (Edge){u, v, head[u], l, r};
  head[u] = En;
}
void spfa(long long *dis, int s) {
  for (int i = 1; i <= n; ++i) dis[i] = 1e18, vis[i] = 0;
  int L = 1, R = 0;
  q[++R] = s, dis[s] = 0, vis[s] = 1;
  while (L <= R) {
    int u = q[L++];
    vis[u] = 0;
    for (int i = head[u], v = e[i].to; i; i = e[i].nxt, v = e[i].to)
      if (dis[v] > dis[u] + e[i].r) {
        dis[v] = dis[u] + e[i].r;
        if (!vis[v]) q[++R] = v;
      }
  }
}
bool check(int f) {
  for (int flag = 1; flag;) {
    flag = 0;
    spfa(d1, s1);
    spfa(d2, s2);
    for (int i = m + 1; i <= m + k; ++i)
      if (d1[e[i].fr] < d2[e[i].fr] + f && e[i].l != e[i].r)
        e[i].r = e[i].l, flag = 1;
    if (d1[t] < d2[t] + f) {
      puts(f ? "DRAW" : "WIN");
      for (int i = m + 1; i <= m + k; ++i) printf("%d ", e[i].r);
      return 1;
    }
  }
  return 0;
}
int main() {
  n = read(), m = read(), k = read(), s1 = read(), s2 = read(), t = read();
  for (int u, v, w, i = 1; i <= m; ++i)
    u = read(), v = read(), w = read(), add_edge(u, v, w, w);
  for (int u, v, l, r, i = 1; i <= k; ++i)
    u = read(), v = read(), l = read(), r = read(), add_edge(u, v, l, r);
  if (!check(0))
    if (!check(1)) puts("LOSE");
  return 0;
}
