#include <bits/stdc++.h>
using namespace std;
int n, m, k, s1, s2, t, l[10005], r[10005], mark[10005];
long long d1[10005], d2[10005];
vector<pair<int, int> > a[10005], b[10005];
int main() {
  cin >> n >> m >> k;
  cin >> s1 >> s2 >> t;
  for (int i = 0; i < m; i++) {
    int u, v, w;
    cin >> u >> v >> w;
    a[u].push_back(make_pair(w, v));
  }
  for (int i = 0; i < k; i++) {
    int u, v;
    cin >> u >> v >> l[i] >> r[i];
    b[u].push_back(make_pair(i, v));
  }
  for (int i = 1; i <= n; i++) d1[i] = d2[i] = 1LL << 60;
  priority_queue<pair<long long, pair<int, int> > > pq;
  pq.push(make_pair(0, make_pair(1, s1)));
  pq.push(make_pair(0, make_pair(0, s2)));
  d1[s1] = 0;
  d2[s2] = 0;
  while (!pq.empty()) {
    int u = pq.top().second.second;
    int p = pq.top().second.first;
    long long w = -pq.top().first;
    pq.pop();
    if (p == 0) {
      if (w == d2[u]) {
        for (int i = 0; i < a[u].size(); i++)
          if (d2[a[u][i].second] > w + a[u][i].first) {
            d2[a[u][i].second] = w + a[u][i].first;
            pq.push(
                make_pair(-d2[a[u][i].second], make_pair(0, a[u][i].second)));
          }
        for (int i = 0; i < b[u].size(); i++) {
          if (mark[b[u][i].first] == 0) mark[b[u][i].first] = 2;
          int g =
              (mark[b[u][i].first] == 1) ? l[b[u][i].first] : r[b[u][i].first];
          if (d2[b[u][i].second] > w + g) {
            d2[b[u][i].second] = w + g;
            pq.push(
                make_pair(-d2[b[u][i].second], make_pair(0, b[u][i].second)));
          }
        }
      }
    } else {
      if (w == d1[u]) {
        for (int i = 0; i < a[u].size(); i++)
          if (d1[a[u][i].second] > w + a[u][i].first) {
            d1[a[u][i].second] = w + a[u][i].first;
            pq.push(
                make_pair(-d1[a[u][i].second], make_pair(1, a[u][i].second)));
          }
        for (int i = 0; i < b[u].size(); i++) {
          if (mark[b[u][i].first] == 0) mark[b[u][i].first] = 1;
          int g =
              (mark[b[u][i].first] == 1) ? l[b[u][i].first] : r[b[u][i].first];
          if (d1[b[u][i].second] > w + g) {
            d1[b[u][i].second] = w + g;
            pq.push(
                make_pair(-d1[b[u][i].second], make_pair(1, b[u][i].second)));
          }
        }
      }
    }
  }
  if (d1[t] <= d2[t]) {
    cout << (d1[t] < d2[t] ? "WIN\n" : "DRAW\n");
    for (int i = 0; i < k; i++) cout << (mark[i] == 1 ? l[i] : r[i]) << " ";
  } else
    cout << "LOSE";
}
