import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class game_sm {
	class Edge {
		int to, w;

		public Edge(int to, int w) {
			super();
			this.to = to;
			this.w = w;
		}

	}

	ArrayList<Edge>[] es;

	@SuppressWarnings("unchecked")
	void solve() {
		int n = nextInt();
		int m = nextInt();
		es = new ArrayList[n];
		for (int i = 0; i < es.length; i++) {
			es[i] = new ArrayList<Edge>();
		}
		for (int i = 0; i < m; i++) {
			int a = nextInt() - 1;
			assert 0 <= a && a < n;
			int b = nextInt() - 1;
			assert 0 <= b && b < n;
			assert a != b;
			int c = nextInt();
			assert 0 < c && c <= 1e9;
			es[a].add(new Edge(b, c));
			es[b].add(new Edge(a, c));
		}
		int t1 = nextInt() - 1;
		assert 0 <= t1 && t1 < n;
		int t2 = nextInt() - 1;
		assert 0 <= t2 && t2 < n;
		int s = nextInt() - 1;
		assert 0 <= s && s < n;

		PriorityQueue<Pair> pq = new PriorityQueue<Pair>();
		pq.add(new Pair(0, s));
		long[] dist = new long[n];
		Arrays.fill(dist, Long.MAX_VALUE);
		dist[s] = 0;
		while (!pq.isEmpty()) {
			Pair p = pq.poll();
			// System.err.println(dist[p.v]);
			if (p.dist > dist[p.v]) {
				continue;
			}
			for (Edge e : es[p.v]) {
				if (dist[e.to] > dist[p.v] + e.w) {
					dist[e.to] = dist[p.v] + e.w;
					pq.add(new Pair(dist[e.to], e.to));
				}
			}
		}
		if (dist[t1] == Long.MAX_VALUE || dist[t2] == Long.MAX_VALUE) {
			throw new AssertionError("No path");
		}
		System.err.println(dist[t1] + " " + dist[t2]);
		if (dist[t1] <= dist[t2]) {
			out.println("First");
		} else {
			out.println("Second");
		}
	}

	class Pair implements Comparable<Pair> {
		long dist;
		int v;

		public Pair(long dist, int v) {
			super();
			this.dist = dist;
			this.v = v;
		}

		@Override
		public int compareTo(Pair p) {
			if (dist < p.dist) {
				return -1;
			}
			if (dist > p.dist) {
				return 1;
			}
			return 0;
		}

	}

	BufferedReader br;
	StringTokenizer st;
	PrintWriter out;

	public void run() {
		try {
			String filename = this.getClass().getName().substring(0, this.getClass().getName().indexOf("_"));
			br = new BufferedReader(new FileReader(filename + ".in"));
			out = new PrintWriter(filename + ".out");
			solve();
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
			System.exit(1);
		}
	}

	String nextToken() {
		try {
			while (st == null || !st.hasMoreTokens()) {
				String s = br.readLine();
				if (s == null) {
					return null;
				}
				st = new StringTokenizer(s);
			}
			return st.nextToken();
		} catch (IOException e) {
			throw new RuntimeException();
		}
	}

	int nextInt() {
		return Integer.parseInt(nextToken());
	}

	long nextLong() {
		return Integer.parseInt(nextToken());
	}

	public static void main(String[] args) {
		new game_sm().run();
	}
}
