#include<bits/stdc++.h>
using namespace std;
long long n,m,s,t1,t2;
long long cnt[10005],dis[10005];
struct ss{
long long y,t;
};
vector<ss> a[10005];
int in[10005];
queue<int> q;
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin >> n >> m >> s >> t1 >> t2;
for(int i=1; i<=m; i++){
int x,y,t;
cin >> x >> y >> t;
ss tt;
tt.y = y;
tt.t = t;
a[x].push_back(tt);
in[y]++;
}
q.push(s);
cnt[s] = 1;
dis[s] = 0;
while(!q.empty()){
int u = q.front();
q.pop();
for(int i=0; i<a[u].size(); i++){
int v = a[u][i].y;
cnt[v] += cnt[u];
dis[v] += dis[u]+cnt[u]*a[u][i].t;
dis[v] %= 10000;
in[v]--;
if(!in[v]) q.push(v);
}
}
cout << (dis[t1]%10000+t2*(cnt[t1]-1))%10000;
return 0;
}