#include <bits/stdc++.h>
using namespace std;
const int maxn = 20000;
long long int inf = 1000ll * 1000 * 1000 * 1000 * 1000 * 1000;
vector<pair<int, int> > adj[maxn];
vector<pair<int, pair<int, int> > > sadj[maxn];
vector<pair<pair<int, int>, pair<int, int> > > E;
long long int d[maxn];
int mark[maxn];
void mul_dij(int s1, int s2, int f, char state) {
  map<pair<int, int>, int> mp;
  d[s1] = 0;
  d[s2] = 0;
  mark[s1] |= 1;
  mark[s2] |= 2;
  set<pair<int, int> > st;
  st.insert({d[s1], s1});
  st.insert({d[s2], s2});
  while (!st.empty()) {
    int u = st.begin()->second;
    st.erase(st.begin());
    for (pair<int, int> p : adj[u]) {
      if (d[p.first] > d[u] + p.second) {
        st.erase({d[p.first], p.first});
        d[p.first] = d[u] + p.second;
        mark[p.first] = mark[u];
        st.insert({d[p.first], p.first});
        continue;
      }
      if (d[p.first] == d[u] + p.second) {
        mark[p.first] |= mark[u];
      }
    }
    for (auto p : sadj[u]) {
      int weight = (mark[u] == 1)
                       ? p.second.first
                       : ((mark[u] == 2) ? p.second.second
                                         : ((state == 'W') ? p.second.second
                                                           : p.second.first));
      mp[{u, p.first}] = weight;
      if (d[p.first] > d[u] + weight) {
        st.erase({d[p.first], p.first});
        d[p.first] = d[u] + weight;
        st.insert({d[p.first], p.first});
        mark[p.first] = mark[u];
        continue;
      }
      if (d[p.first] == d[u] + weight) {
        mark[p.first] |= mark[u];
      }
    }
  }
  if (mark[f] == 1) {
    cout << "WIN\n";
    for (auto p : E) {
      long long int res = ((mp[p.first]) ? mp[p.first] : p.second.first);
      if (res == 8382401) {
        cout << p.second.second << " ";
      } else {
        cout << res << " ";
      }
    }
    exit(0);
  }
  if (mark[f] == 3 && state == 'D') {
    cout << "DRAW\n";
    for (auto p : E) {
      cout << ((mp[p.first]) ? mp[p.first] : p.second.first) << " ";
    }
    exit(0);
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, m, k;
  cin >> n >> m >> k;
  int s1, s2, f;
  cin >> s1 >> s2 >> f;
  for (int i = 0; i < m; i++) {
    int u, v, w;
    cin >> u >> v >> w;
    adj[u].push_back({v, w});
  }
  for (int i = 0; i < k; i++) {
    int u, v, l, r;
    cin >> u >> v >> l >> r;
    E.push_back({{u, v}, {l, r}});
    sadj[u].push_back({v, {l, r}});
  }
  fill(d, d + maxn, inf);
  fill(mark, mark + maxn, 0);
  mul_dij(s1, s2, f, 'W');
  fill(d, d + maxn, inf);
  fill(mark, mark + maxn, 0);
  mul_dij(s1, s2, f, 'D');
  cout << "LOSE";
  return 0;
}
