#include <bits/stdc++.h>
#define pb push_back
#define pii pair<int,int>
#define fi first
#define int long long
#define se second
#define ios ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define TXT "test"
#define dn cout<<"\n";
#define freo if(fopen(TXT".inp","r")){freopen(TXT".inp","r",stdin); freopen(TXT".out","w",stdout);} ///TEMPLATE MADE BY NIETTRAAN
using namespace std;
const int MXN = 1 * 1e6 + 5;
const int INF = 1e18;
const int MOD = 1e9+7;
const int LOG = 20;
int n, m, a, b;
bool c[MXN];
struct NT
{
int x, y, t;
} niet[MXN];
int dist[MXN];
vector<pii> nucy[MXN];
void sub1()
{
memset(dist, 0x3f, sizeof dist);
dist[1] = 0;
priority_queue<pii, vector<pii>, greater<>> pq;
pq.push({0, 1});
int sum = a + b, phi, dtime;
while (!pq.empty()) {
auto [time, u] = pq.top();
pq.pop();
if (time > dist[u]) continue;
if (u == n) {
cout << time;
return;
}
for (auto [W, v] : nucy[u])
{
if (W > a) continue;
phi = time % sum;
if (phi <= a - W)
dtime = time;
else
dtime = (time / sum + 1) * sum;
int artime = dtime + W;
if (artime < dist[v]) {
dist[v] = artime;
pq.push({artime, v});
}
}
}
cout << -1;
}
void sub2()
{
memset(dist, 0x3f, sizeof dist);
dist[1] = 0;
priority_queue<pii, vector<pii>, greater<pii>> pq;
pq.push({0, 1});
while(!pq.empty())
{
auto [W, u] = pq.top();
pq.pop();
if (W != dist[u]) continue;
for(auto [w, v] : nucy[u])
{
if(dist[u] + w < dist[v])
{
dist[v] = dist[u] + w;
pq.push({dist[v], v});
}
}
}
if(dist[n] > a)
{
cout << -1;
return;
}
cout << dist[n];
}
void sub3()
{
if (a < 10)
{
cout << -1;
return;
}
memset(dist, 0x3f, sizeof dist);
dist[1] = 0;
priority_queue<pii,vector<pii>,greater<pii>> pq;
pq.push({0, 1});
int sum = a + b, phi, dtime, artime;
while(!pq.empty())
{
auto [time, u] = pq.top();
pq.pop();
if (time > dist[u])
continue;
if (u == n)
{
cout << time;
return;
}
for (auto [W, v] : nucy[u])
{
phi = time % sum;
if (phi <= a - W)
dtime = time;
else
dtime = (time / sum + 1) * sum;
artime = dtime + W;
if (artime < dist[v])
{
dist[v] = artime;
pq.push({artime, v});
}
}
}
cout << -1;
}
void solve()
{
bool checksub2 = 1, checksub3 = 1;
cin >> n >> m;
for(int i = 1; i <= m; i -= -1)
{
cin >> niet[i].x >> niet[i].y >> niet[i].t;
nucy[niet[i].x].pb({niet[i].t, niet[i].y});
if(niet[i].t != 10)
{
checksub3 = 0;
}
}
for(int i = 1; i <= n; i -= -1)
{
cin >> c[i];
if(i > 2 && i < n && c[i] == 0)
{
checksub2 = 0;
}
}
cin >> a >> b;
if(n <= 5 && m <= 10)
{
sub1();
return;
}
if(checksub2)
{
sub2();
return;
}
if(checksub3)
{
sub3();
return;
}
}
int32_t main()
{
ios;
freo;
solve();
return 0;
}
/*
*/
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBpb3MgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoTlVMTCk7IGNvdXQudGllKE5VTEwpOwojZGVmaW5lIFRYVCAidGVzdCIKI2RlZmluZSBkbiBjb3V0PDwiXG4iOwojZGVmaW5lIGZyZW8gaWYoZm9wZW4oVFhUIi5pbnAiLCJyIikpe2ZyZW9wZW4oVFhUIi5pbnAiLCJyIixzdGRpbik7IGZyZW9wZW4oVFhUIi5vdXQiLCJ3IixzdGRvdXQpO30gICAgICAgICAgICAgLy8vVEVNUExBVEUgTUFERSBCWSBOSUVUVFJBQU4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgoKY29uc3QgaW50IE1YTiA9IDEgKiAxZTYgKyA1Owpjb25zdCBpbnQgSU5GID0gMWUxODsKY29uc3QgaW50IE1PRCA9IDFlOSs3Owpjb25zdCBpbnQgTE9HID0gMjA7CgppbnQgbiwgbSwgYSwgYjsKYm9vbCBjW01YTl07CnN0cnVjdCBOVAp7CiAgICBpbnQgeCwgeSwgdDsKfSAgbmlldFtNWE5dOwppbnQgZGlzdFtNWE5dOwp2ZWN0b3I8cGlpPiBudWN5W01YTl07Cgp2b2lkIHN1YjEoKQp7CiAgICBtZW1zZXQoZGlzdCwgMHgzZiwgc2l6ZW9mIGRpc3QpOwogICAgZGlzdFsxXSA9IDA7CgogICAgcHJpb3JpdHlfcXVldWU8cGlpLCB2ZWN0b3I8cGlpPiwgZ3JlYXRlcjw+PiBwcTsKICAgIHBxLnB1c2goezAsIDF9KTsKICAgIGludCBzdW0gPSBhICsgYiwgcGhpLCBkdGltZTsKICAgIHdoaWxlICghcHEuZW1wdHkoKSkgewogICAgICAgIGF1dG8gW3RpbWUsIHVdID0gcHEudG9wKCk7CiAgICAgICAgcHEucG9wKCk7CiAgICAgICAgaWYgKHRpbWUgPiBkaXN0W3VdKSBjb250aW51ZTsKCiAgICAgICAgaWYgKHUgPT0gbikgewogICAgICAgICAgICBjb3V0IDw8IHRpbWU7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGZvciAoYXV0byBbVywgdl0gOiBudWN5W3VdKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKFcgPiBhKSBjb250aW51ZTsKICAgICAgICAgICAgcGhpID0gdGltZSAlIHN1bTsKCiAgICAgICAgICAgIGlmIChwaGkgPD0gYSAtIFcpCiAgICAgICAgICAgICAgICBkdGltZSA9IHRpbWU7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGR0aW1lID0gKHRpbWUgLyBzdW0gKyAxKSAqIHN1bTsKCiAgICAgICAgICAgIGludCBhcnRpbWUgPSBkdGltZSArIFc7CgogICAgICAgICAgICBpZiAoYXJ0aW1lIDwgZGlzdFt2XSkgewogICAgICAgICAgICAgICAgZGlzdFt2XSA9IGFydGltZTsKICAgICAgICAgICAgICAgIHBxLnB1c2goe2FydGltZSwgdn0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgLTE7Cn0KCgp2b2lkIHN1YjIoKQp7CiAgICBtZW1zZXQoZGlzdCwgMHgzZiwgc2l6ZW9mIGRpc3QpOwogICAgZGlzdFsxXSA9IDA7CgogICAgcHJpb3JpdHlfcXVldWU8cGlpLCB2ZWN0b3I8cGlpPiwgZ3JlYXRlcjxwaWk+PiBwcTsKICAgIHBxLnB1c2goezAsIDF9KTsKCiAgICB3aGlsZSghcHEuZW1wdHkoKSkKICAgIHsKICAgICAgICBhdXRvIFtXLCB1XSA9IHBxLnRvcCgpOwogICAgICAgIHBxLnBvcCgpOwoKICAgICAgICBpZiAoVyAhPSBkaXN0W3VdKSBjb250aW51ZTsKCiAgICAgICAgZm9yKGF1dG8gW3csIHZdIDogbnVjeVt1XSkKICAgICAgICB7CiAgICAgICAgICAgIGlmKGRpc3RbdV0gKyB3IDwgZGlzdFt2XSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZGlzdFt2XSA9IGRpc3RbdV0gKyB3OwogICAgICAgICAgICAgICAgcHEucHVzaCh7ZGlzdFt2XSwgdn0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmKGRpc3Rbbl0gPiBhKQogICAgewogICAgICAgIGNvdXQgPDwgLTE7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgY291dCA8PCBkaXN0W25dOwp9Cgp2b2lkIHN1YjMoKQp7CiAgICBpZiAoYSA8IDEwKQogICAgewogICAgICAgIGNvdXQgPDwgLTE7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbWVtc2V0KGRpc3QsIDB4M2YsIHNpemVvZiBkaXN0KTsKICAgIGRpc3RbMV0gPSAwOwogICAgcHJpb3JpdHlfcXVldWU8cGlpLHZlY3RvcjxwaWk+LGdyZWF0ZXI8cGlpPj4gcHE7CiAgICBwcS5wdXNoKHswLCAxfSk7CiAgICAKICAgIGludCBzdW0gPSBhICsgYiwgcGhpLCBkdGltZSwgYXJ0aW1lOwogICAgCiAgICB3aGlsZSghcHEuZW1wdHkoKSkKICAgIHsKICAgICAgICBhdXRvIFt0aW1lLCB1XSA9IHBxLnRvcCgpOwogICAgICAgIHBxLnBvcCgpOwogICAgICAgIGlmICh0aW1lID4gZGlzdFt1XSkgCiAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICBpZiAodSA9PSBuKQogICAgICAgIHsKICAgICAgICAgICAgY291dCA8PCB0aW1lOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBmb3IgKGF1dG8gW1csIHZdIDogbnVjeVt1XSkKICAgICAgICB7CiAgICAgICAgICAgIHBoaSA9IHRpbWUgJSBzdW07CiAgICAgICAgICAgIGlmIChwaGkgPD0gYSAtIFcpCiAgICAgICAgICAgICAgICBkdGltZSA9IHRpbWU7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGR0aW1lID0gKHRpbWUgLyBzdW0gKyAxKSAqIHN1bTsKICAgICAgICAgICAgYXJ0aW1lID0gZHRpbWUgKyBXOwogICAgICAgICAgICBpZiAoYXJ0aW1lIDwgZGlzdFt2XSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZGlzdFt2XSA9IGFydGltZTsKICAgICAgICAgICAgICAgIHBxLnB1c2goe2FydGltZSwgdn0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgLTE7Cn0KCgp2b2lkIHNvbHZlKCkKewogICAgYm9vbCBjaGVja3N1YjIgPSAxLCBjaGVja3N1YjMgPSAxOwogICAgY2luID4+IG4gPj4gbTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbTsgaSAtPSAtMSkKICAgIHsKICAgICAgICBjaW4gPj4gIG5pZXRbaV0ueCA+PiAgbmlldFtpXS55ID4+ICBuaWV0W2ldLnQ7CiAgICAgICAgbnVjeVtuaWV0W2ldLnhdLnBiKHtuaWV0W2ldLnQsIG5pZXRbaV0ueX0pOwogICAgICAgIGlmKG5pZXRbaV0udCAhPSAxMCkKICAgICAgICB7CiAgICAgICAgICAgIGNoZWNrc3ViMyA9IDA7CiAgICAgICAgfQogICAgfQogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpIC09IC0xKQogICAgewogICAgICAgIGNpbiA+PiBjW2ldOwogICAgICAgIGlmKGkgPiAyICYmIGkgPCBuICYmIGNbaV0gPT0gMCkKICAgICAgICB7CiAgICAgICAgICAgIGNoZWNrc3ViMiA9IDA7CiAgICAgICAgfQogICAgfQogICAgY2luID4+IGEgPj4gYjsKICAgIGlmKG4gPD0gNSAmJiBtIDw9IDEwKQogICAgewogICAgICAgIHN1YjEoKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZihjaGVja3N1YjIpCiAgICB7CiAgICAgICAgc3ViMigpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmKGNoZWNrc3ViMykKICAgIHsKICAgICAgICBzdWIzKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQp9CgppbnQzMl90IG1haW4oKQp7CiAgICBpb3M7CiAgICBmcmVvOwogICAgc29sdmUoKTsKICAgIHJldHVybiAwOwp9Ci8qCgoqLwo=