#include <bits/stdc++.h>
using namespace std;
const int mod = 1000 * 1000 * 1000 + 7;
const int INF = 1000 * 1000 * 1000;
const long long LINF = (long long)INF * INF;
int n, m, k;
int s1, s2, f;
int efrom[10100], eto[10100], ewl[10100], ewr[10100];
vector<int> adj[10100];
set<pair<long long, long long> > s;
long long dist[10100];
int mark[10100];
void dij(bool setmax) {
  fill(dist, dist + n + 10, LINF);
  memset(mark, 0, sizeof(mark));
  s.clear();
  if (s1 != s2) {
    dist[s1] = dist[s2] = 0;
    mark[s1] = 1;
    mark[s2] = 2;
    s.insert({dist[s1], s1});
    s.insert({dist[s2], s2});
  } else {
    mark[s1] = 0;
    dist[s1] = 0;
    s.insert({dist[s1], s1});
  }
  while (!s.empty()) {
    int v = s.begin()->second;
    s.erase(s.begin());
    for (int e : adj[v]) {
      int u = eto[e];
      int w = ewl[e];
      if ((mark[v] == 0 && setmax) || mark[v] == 2) w = ewr[e];
      long long nw = dist[v] + w;
      if (nw < dist[u]) {
        s.erase({dist[u], u});
        dist[u] = nw;
        s.insert({dist[u], u});
        mark[u] = mark[v];
      } else if (nw == dist[u]) {
        if (mark[u] != mark[v]) {
          mark[u] = 0;
        }
      }
    }
  }
}
int32_t main(void) {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ;
  cin >> n >> m >> k;
  cin >> s1 >> s2 >> f;
  for (int i = (0); i < (m); i++) {
    int x, y, w;
    cin >> x >> y >> w;
    adj[x].push_back(i);
    efrom[i] = x;
    eto[i] = y;
    ewl[i] = ewr[i] = w;
  }
  for (int i = (m); i < (m + k); i++) {
    int x, y, l, r;
    cin >> x >> y >> l >> r;
    adj[x].push_back(i);
    efrom[i] = x;
    eto[i] = y;
    ewl[i] = l;
    ewr[i] = r;
  }
  dij(true);
  ;
  ;
  ;
  ;
  if (mark[f] == 1) {
    cout << "WIN\n";
    for (int i = (m); i < (m + k); i++) {
      if (mark[efrom[i]] == 2 || mark[efrom[i]] == 0) {
        cout << ewr[i];
      } else {
        cout << ewl[i];
      }
      cout << ' ';
    }
    cout << '\n';
    return 0;
  }
  dij(false);
  if (mark[f] < 2) {
    cout << "DRAW\n";
    for (int i = (m); i < (m + k); i++) {
      if (mark[efrom[i]] == 2) {
        cout << ewr[i];
      } else {
        cout << ewl[i];
      }
      cout << ' ';
    }
    cout << '\n';
    return 0;
  }
  cout << "LOSE\n";
  return 0;
}
