어떤 나라에 1번부터 N번까지 번호가 붙은 도시 N개가 있다. 한 엔지니어는 어느 도시에서든 다른 모든 도시로 갈 수 있도록 도로를 건설하려고 한다. 중간에 다른 도시를 여러 개 거쳐 가도 된다.
엔지니어의 팀은 도로 후보가 될 길을 M개 조사했다. 각 길은 두 도시를 양방향으로 잇고, 그 길 위에 도로를 놓으려면 정해진 비용이 든다. 길이 짧을수록 비용도 싸다.
엔지니어는 교통 시스템을 미리 계획해 두지 않았다. 그저 마음에 드는 길을 하나 골라 도로를 놓는 일을 모든 도시가 연결될 때까지 반복한다.
지금 엔지니어는 도시 p와 도시 q를 잇는 길에 도로를 놓으려고 한다. 비용을 줄이라는 정부의 압박 때문에 그는 이 도로를 놓아도 되는지 판단하는 프로그램을 당신에게 요구했다. 그 도로를 포함하면서 모든 도시를 연결하는 총비용 최소의 도로망을 만들 수 있으면 YES를, 그렇지 않으면 NO를 출력하면 된다.
첫 줄에 테스트 케이스의 개수 T가 주어진다. (T≤10)
각 테스트 케이스의 첫 줄에는 정수 N, M, p, q가 주어진다. N(2≤N≤10000)은 도시의 수, M(1≤M≤20000)은 길의 수이고, p와 q(1≤p,q≤N)는 도로를 놓아도 되는지 판단할 두 도시이다.
이어지는 M개의 줄에는 각각 정수 u, v, w가 주어진다. (1≤u≤N, 1≤v≤N, 1≤w≤400000) 도시 u와 도시 v를 양방향으로 잇는 길의 비용이 w라는 뜻이다.
한 테스트 케이스 안에서 길의 비용은 모두 다르고, 두 도시를 잇는 길은 많아야 하나이다. p와 q를 잇는 길은 주어진 M개의 길 중 하나이다. 모든 도시를 연결하는 도로망이 적어도 하나 있다는 것은 보장된다. 입력은 모두 정수이다.
각 테스트 케이스마다 한 줄씩 출력한다. p와 q를 잇는 도로를 포함하면서 총비용이 최소인 도로망을 만들 수 있으면 YES를, 그렇지 않으면 NO를 출력한다.