#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e4 + 10;
const int MAXK = 100 + 10;
int T, n, m, k, s1, s2, f, ans[MAXK];
long long h[MAXN];
char s[MAXN];
pair<int, pair<int, int>> edge[MAXK];
vector<pair<int, int>> g[MAXN];
vector<int> g2[MAXN];
void dijkstra(int src1, int src2, char c) {
  priority_queue<pair<long long, int>, vector<pair<long long, int>>,
                 greater<pair<long long, int>>>
      q;
  memset(h, 63, sizeof h);
  for (int i = 1; i <= n; i++) {
    s[i] = '-';
  }
  h[src1] = 0;
  h[src2] = 0;
  s[src1] = 'W';
  s[src2] = 'L';
  q.push({0, src1});
  q.push({0, src2});
  while (!q.empty()) {
    int x = (q.top()).first, v = (q.top()).second;
    q.pop();
    if (x > h[v]) continue;
    for (auto e : g[v]) {
      int u = e.first, w = e.second;
      if (h[v] + w < h[u]) {
        h[u] = h[v] + w;
        q.push({h[u], u});
        s[u] = s[v];
      } else if (h[v] + w == h[u] && s[v] == c) {
        s[u] = s[v];
      }
    }
    for (auto e : g2[v]) {
      int u = edge[e].first;
      int w;
      if (s[v] == 'W') {
        w = edge[e].second.first;
        ans[e] = edge[e].second.first;
      } else {
        w = edge[e].second.second;
        ans[e] = edge[e].second.second;
      }
      if (h[v] + w < h[u]) {
        h[u] = h[v] + w;
        q.push({h[u], u});
        s[u] = s[v];
      } else if (h[v] + w == h[u] && s[v] == c) {
        s[u] = s[v];
      }
    }
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  T = 1;
  while (T--) {
    cin >> n >> m >> k >> s1 >> s2 >> f;
    for (int i = 1; i <= m; i++) {
      int u, v, w;
      cin >> u >> v >> w;
      g[u].push_back({v, w});
    }
    for (int i = 1; i <= k; i++) {
      int u, v, l, r;
      cin >> u >> v >> l >> r;
      edge[i] = {v, {l, r}};
      g2[u].push_back(i);
    }
    if (s1 == s2) {
      cout << "DRAW" << '\n';
      for (int i = 1; i <= k; i++) {
        cout << edge[i].second.first << ' ';
      }
      return 0;
    }
    dijkstra(s1, s2, 'L');
    if (s[f] == 'W') {
      cout << "WIN" << '\n';
      for (int i = 1; i <= k; i++) {
        if (ans[i]) {
          cout << ans[i] << ' ';
        } else {
          cout << edge[i].second.first << ' ';
        }
      }
      return 0;
    }
    dijkstra(s1, s2, 'W');
    if (s[f] == 'W') {
      cout << "DRAW" << '\n';
      for (int i = 1; i <= k; i++) {
        if (ans[i]) {
          cout << ans[i] << ' ';
        } else {
          cout << edge[i].second.first << ' ';
        }
      }
      return 0;
    }
    cout << "LOSE";
  }
  return 0;
}
