COLLECT
  • Инкассаторы (А.Сикорский)
    COLLECT


Описание
Когда Макс Крейзи закончил финансовый колледж, он стал управляющим городского банка. Уже с первых дней работы Макс столкнулся с одной неразрешимой для него проблемой. 

В стране, где живет Макс, есть N городов. Некоторые из них связанны двусторонними дорогами, которые пересекаются только в городах. Раз в месяц инкассаторы Макса должны доставить деньги в K сберкасс. Все K сберкасс находятся в различных городах. Пока банк Макса небогат и имеет всего одну машину для перевозки денег. 

Задание
Вам необходимо помочь Максу составить маршрут, который, начинается в городе L (в этом городе находится банк Макса), проходит по всем K городам, где находятся нужные сберкассы, и заканчивается также в городе L. Этот маршрут должен иметь минимальную длину (длиной маршрута назовем сумму длин всех дорог, входящих в этот маршрут). 


Входные данные
В первой строке
входного файла COLLECT.IN записаны через пробел три числа: N, M и K, где N - общее количество городов в стране, M - общее количество двусторонних дорог, K - количество сберкасс которые должны посетить инкассаторы (без учета города L). Во второй строке через пробел идут K чисел - номера городов, где находятся сберкассы. Следующие M строк содержат описание дорог. В каждой строке описывается одна дорога в виде X, Y и S (разделенные пробелом), где X,Y - номера городов, связанные дорогой, и S - длина этой дороги. В последней строке дано число L - номер города, где находится банк Макса. 

Выходные данные
Единственная строка выходного файла
COLLECT.OUT должна содержать набор чисел - номеров городов искомого маршрута в порядке обхода. Эти числа должны быть разделены одиночными пробелами. В случае, когда такого маршрута не существует, выходной файл должен содержать одно слово "NO". 

Ограничения:
на используемую память: 16Mb
1<N<=100 
0<M<=N(N-1)/2
0<K<18,K<N
0<S<=50000
1<=L,X,Y<=N

Все входные данные - натуральные числа



Например:

COLLECT.IN
4  6  3
2  4  3
1  2  10
2  4  3
1  3  5
1  4  4
3  2  7
4  3  8



COLLECT.OUT
1  3  2  4  1




COLLECT.IN
6  9  2 
3  4
1  3  24
1  2  10
2  6  5
2  5  6
3  5  7
3  4  16
4  5  9
4  6  8
5  6  4
1
 

COLLECT.OUT
1  2  6  4  3  5  2  1