해마다 큰 국제 행사가 열린다. 행사장 앞에는 길고 넓은 거리가 있다. 행사가 시작될 때 주최 측은 거리를 따라 깃대를 세운다. 깃대마다 참가국의 국기를 게양하고 해마다 그 배치를 바꾸는데, 이것이 행사의 상징이 되었다.
깃대는 한 직선 위에 놓여 있고, 깃대 fi는 위치 ℓi에 있다. 위치 ℓi는 모두 정수이고 서로 다르다. 깃대에 게양하는 국기는 국가 집합 ℵ에 속한 국가의 것이다. 작년에는 깃대 fi에 국가 ai의 국기가 걸려 있었다. 새해 첫날에는 깃대 fi에 새로 게양할 국가 bi가 정해진다.
깃대 fi의 국기를 ai에서 bi로 바꿔야 한다. 이 일은 국기를 내리고 올리는 로봇 ℜ가 맡는다. ℜ는 국기를 사실상 무제한으로 실을 수 있다. 깃대 fi에서 국가 ai의 국기를 내려 실을 수 있고, 그다음 bj=ai인 깃대 fj의 위치 ℓj로 이동해 그 국기를 게양할 수 있다. 다음 조건이 성립하므로 이 작업은 언제나 가능하다.
각 국가 c∈ℵ에 대해, ai=c인 깃대 fi의 개수와 bj=c인 깃대 fj의 개수가 같다.
모든 ℓi와 다른 특별한 위치 A가 있고, 로봇 ℜ는 항상 A에서 출발해 A에서 끝나야 한다. 위치 A에는 깃대가 없다. 즉 ℜ는 A에서 출발해 모든 국기 ai를 bj=ai인 깃대 fj로 옮긴 뒤 A로 돌아온다.
위치 A와 깃대의 위치, 그리고 각 깃대 fi의 국가 ai와 bi가 주어질 때, 모든 국기를 옮기는 로봇 ℜ의 최소 이동 거리를 계산하는 프로그램을 작성하시오.
그림 1에는 깃대를 나타내는 여섯 개의 점과 로봇 ℜ가 출발하고 도착하는 점 A가 있다. 국기의 국가는 집합 {1,2,3}의 정수에 대응한다. 각 점에는 정수 쌍 (a,b)가 붙어 있고, a는 작년의 국가, b는 새해의 국가이다. 화살표는 이동 거리를 가장 짧게 만드는 ℜ의 이동을 나타낸다. ℜ는 A에서 오른쪽으로 5까지 가서 5에 있는 점의 국가 2 국기를 싣는다. 5에서 1까지 왼쪽으로 이동하면서 3과 5에 있는 점의 국기를 각각 1과 2에 있는 점으로 옮긴다. 이어서 1에서 7까지 오른쪽으로 이동하면서 1, 2, 6에 있는 점의 국기를 각각 3, 5, 7에 있는 점으로 옮긴다. 마지막으로 7에서 A까지 왼쪽으로 이동하면서 7에 있는 점의 국기를 6에 있는 점으로 옮기고 끝난다. 이때 ℜ의 이동 거리는 14이다.

그림 1.
입력은 표준 입력으로 주어진다. 입력은 T개의 테스트 케이스로 이루어진다. 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 깃대를 나타내는 점의 개수 N (2≤N≤100,000)이 주어지며, 여기에 A는 포함되지 않는다. 둘째 줄에는 A의 좌표 α (1≤α≤1,000,000)가 주어진다. 셋째 줄에는 국가 집합 {1,2,…,M}을 나타내는 정수 M (1≤M≤1,000)이 주어진다. 각 정수 i=1,…,M에 대해 국가 i의 국기가 적어도 하나의 깃대에 게양되어 있다. 이어지는 N개의 줄 중 i번째 줄에는 세 정수 ℓi, ai, bi가 주어진다. 각각 깃대 fi의 좌표, 작년에 걸려 있던 국기의 국가, 새해에 걸릴 국기의 국가이다. 1≤ℓi≤1,000,000이고 ℓi=α이며, 1≤ai,bi≤M이고 ai=bi이다. 또한 모든 ℓi는 서로 다르고 오름차순으로 주어진다.
출력은 표준 출력으로 한다. 각 테스트 케이스마다 정확히 한 줄을 출력한다. 그 줄에는 로봇 ℜ의 최소 이동 거리를 출력한다.