K번째 최단 경로
시간 제한1초메모리 제한512 MB
각 자릿수가 정확히 1만큼 다른 L자리 수끼리 연결된 그래프에서 x에서 y로 가는 최단 경로를 사전순으로 정렬해 K번째 경로를 구하거나, 없으면 NO를 출력한다.
문제
Bob와 Alice는 그래프에서 최단 경로를 찾는 게임을 즐겨한다.
동생 Bob은 아직 어려서 실수를 많이 하기 때문에 Alice는 Bob가 연습할 수 있도록 다음과 같은 문제를 제시했다.
먼저, 길이를 나타내는 정수 을 정한 후, 부터 까지의 총 개의 양의 정수를 이용하여 아래 규칙에 따라 그래프를 만든다:
- 노드: 부터 까지의 각 정수는 그래프의 고유한 노드를 나타낸다. 이 때, 각 정수는 선행하는 을 붙여 반드시 길이가 이 되도록 만든다. 예를 들어 라면 로 총 개의 노드를 만들게 된다.
- 간선: 두 정점 사이에 간선이 있으려면 와 의 의 자리, 의 자리, ..., 의 자리를 비교했을 때 딱 한 곳만 달라야 하고 그 차이가 정확히 이 되어야 한다. 예를 들어 인 경우, 과 , 과 , 과 , 과 사이에는 간선이 있고, 과 , 과 , 과 혹은 과 사이에는 간선이 없다.
아래 그림은 인 경우 그래프의 일부를 보여준다.

위 규칙에 따라 그래프를 만든 뒤, Alice는 Bob에게 두 정점 와 사이의 최단 경로 중 사전 순으로 정렬했을 시 번째에 해당하는 최단 경로를 찾아보라고 했다. 예를 들어 , , 인 경우를 생각해보자. 이 경우 두 노드 사이의 최단 거리는 이며, 아래와 같이 총 여섯 개의 최단 경로가 존재한다. 만약 이라면 정답은 번째 최단 경로인 가 된다.
- 위의 경로와 비교하면 번째 노드인 가 보다 사전 순으로 앞선다.
- 위의 경로와 비교하면 번째 노드인 가 보다 사전 순으로 앞선다.
- 위의 경로와 비교하면 번째 노드인 이 보다 사전 순으로 앞선다.
- 위의 경로와 비교하면 번째 노드인 가 보다 사전 순으로 앞선다.
- 위의 경로와 비교하면 번째 노드인 이 보다 사전순으로 앞선다.
입력으로 , , , 가 주어졌을 때 Bob을 도와 와 사이의 최단 경로 중 사전 순으로 번째 최단 경로를 구해보자. 만약 와 사이의 최단 경로의 개수가 보다 작다면 "NO"를 출력하도록 한다.
입력
첫 줄에 테스트 케이스의 수 가 주어진다.
각 테스트 케이스의 입력은 한 줄에 , , , 가 공백으로 구분되어 주어진다.
출력
각 테스트 케이스의 정답을 각 줄에 출력한다.
번째 최단 경로가 존재하는 경우 해당 최단 경로를 출력하고, 그렇지 않은 경우 "NO"를 출력한다 (따옴표 제외).
제한
- , 는 언제나 선행 을 포함하여 길이가 인 형태로 주어진다.