#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#define fin "TIENVND.INP"
#define fon "TIENVND.OUT"
using namespace std;
ifstream fi;
ofstream fo;

long d,p,c,f,s,mid;
long pre[500],next[500],head[500],mn[500],g[500];

void add(long u,long v,long k)
{
	mid++;
	pre[mid]=v;
	next[mid]=head[u];
	head[u]=mid;
	mn[mid]=k;
}

void Inp()
{
	long i,u,v,k;
	fi>>d>>p>>c>>f>>s;
	for(int i=1;i<=p;i++)
	{
		fi>>u>>v;
		add(u,v,0-d);
	}
	for(int i=1;i<=f;i++)
	{
		fi>>u>>v>>k;
		add(u,v,k-d);
	}
}

void Process()
{
	long count,u,j,i,v,res;
	bool stop;
	for(count=1;count<=c+1;count++)
	{
		stop=true;
		if(count==c+1)
		{
			fo<<-1;
			return ;
		}
		for(u=1;u<=c;u++)
		{
			j=head[u];
			while(j!=0)
			{
				v=pre[j];
				if(g[v]>g[u]+mn[j])
				{
					g[v]=g[u]+mn[j];
					stop=false;
				}
				j=next[j];
			}
		}
		if (stop) break;
	}
	res=100000001;
	for(i=1;i<=c;i++)
		if(i!=s && g[i]<res) 
			res=g[i];
	fo<<d-res;
}

int main()
{
	fi.open(fin,ios::in);
	fo.open(fon,ios::out);
	Inp();
	Process();
	fi.close();
	fo.close();
	return 0;
	
}
