#include <bits/stdc++.h>
using namespace std;
int n, m, k;
int s1, s2, f;
vector<pair<int, long long> > adj[10100];
priority_queue<pair<long long, int> > h;
bool mk[10100];
void dijs(int s, long long* d, int* vs) {
  for (int i = 1; i < n + 1; i++) d[i] = 1000000000000000LL, mk[i] = false;
  while (h.size()) h.pop();
  d[s] = 0;
  h.push(make_pair(-d[s], s));
  int cnt = 0;
  while (h.size()) {
    int v = h.top().second;
    h.pop();
    if (!mk[v]) {
      vs[cnt++] = v;
      mk[v] = true;
      for (int i = 0; i < adj[v].size(); i++) {
        int w = adj[v][i].first;
        long long cs = adj[v][i].second;
        if (!mk[w] && d[v] + cs < d[w]) {
          d[w] = d[v] + cs;
          h.push(make_pair(-d[w], w));
        }
      }
    }
  }
  for (int i = 1; i < n + 1; i++)
    if (!mk[i]) vs[cnt++] = i;
}
int vert;
long long d1[10100], d2[10100];
int vs1[10100], vs2[10100];
bool esp[10100];
int func() {
  dijs(s1, d1, vs1);
  dijs(s2, d2, vs2);
  int v1 = -1, v2 = -1;
  for (int i = 0; i < n; i++) {
    if (v1 == -1 && esp[vs1[i]]) v1 = vs1[i];
    if (v2 == -1 && esp[vs2[i]]) v2 = vs2[i];
  }
  if ((v1 == -1 || d1[f] <= d1[v1]) && (v2 == -1 || d2[f] <= d2[v2])) {
    if (d1[f] == d2[f]) return 0;
    if (d1[f] < d2[f]) return 1;
    return 2;
  }
  vert = v1;
  if (d1[v1] < d2[v2]) return 3;
  vert = v2;
  return 4;
}
int v1[110], v2[110];
long long l1[110], l2[110], val[110];
bool def[110];
int main() {
  scanf("%d %d %d %d %d %d", &n, &m, &k, &s1, &s2, &f);
  for (int i = 0; i < m; i++) {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    adj[a].push_back(make_pair(b, c));
  }
  for (int i = 0; i < k; i++) {
    def[i] = false;
    scanf("%d %d %lld %lld", &v1[i], &v2[i], &l1[i], &l2[i]);
  }
  int aux = 0;
  while (true) {
    for (int i = 1; i < n + 1; i++) esp[i] = false;
    for (int i = 0; i < k; i++)
      if (!def[i]) esp[v1[i]] = true;
    aux = func();
    if (aux <= 2) break;
    for (int i = 0; i < k; i++)
      if (!def[i] && v1[i] == vert) {
        def[i] = true;
        val[i] = (aux == 3) ? l1[i] : l2[i];
        adj[v1[i]].push_back(make_pair(v2[i], val[i]));
        break;
      }
  }
  if (aux == 2)
    printf("LOSE\n");
  else {
    if (aux == 0)
      printf("DRAW\n");
    else
      printf("WIN\n");
    for (int i = 0; i < k; i++) {
      if (i) printf(" ");
      if (def[i])
        printf("%lld", val[i]);
      else
        printf("%lld", l1[i]);
    }
    printf("\n");
  }
  return 0;
}
