A2. На заре приключений
ограничение по времени на тест
7 секунд
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Богатство, власть, сила — король пиратов Гол Д. Роджер достиг всего в этом мире. Слова, сказанные им перед смертью, отправили людей в море: «Мои сокровища? Если вы хотите, они ваши! Найдите их. Все, что у меня было, осталось в одном месте». В погоне за своими грёзами люди отправились на Гранд Лайн. Так началась Великая эпоха пиратов!

Это интерактивная задача.

На карте Гранд Лайн есть $$$n$$$ островов, соединённых $$$m$$$ возможными маршрутами. $$$i$$$-й маршрут позволяет переплыть с острова $$$a_i$$$ на остров $$$b_i$$$ за время $$$w_i$$$. Так, как погода и течения на Гранд Лайн непредсказуемы и постоянно меняются, иногда некоторые маршруты становятся недоступными. Вероятность доступности $$$i$$$-го маршрута оценивается как $$$p_i$$$.

Изначально Луффи со своей командой находятся на острове с номером $$$1$$$. Его цель — остров с номером $$$n$$$. Находясь на очередном острове, Луффи узнаёт доступные маршруты, исходящие из этого острова. После этого он может выбрать любой доступный маршрут и переплыть по нему на другой остров. Помогите Луффи добраться до острова $$$n$$$, минимизируя потраченное время!

Гарантируется, что для каждого острова $$$v$$$ существует маршрут из него на остров $$$u \gt v$$$ с вероятностью доступности $$$p_i = 100\%$$$. Таким образом, решение всегда существует вне зависимости от доступных маршрутов.

Чтобы случайная геренация маршрутов не влияла на оценку решения, для каждого списка возможных маршрутов вам нужно решить задачу для $$$q$$$ независимых случайно сгенерированных случаев.

Это задача с открытыми тестами

В этой задаче $$$10$$$ тестов. Входные данные для всех тестов доступны участнику и находятся в файлах input1.txt, input2.txt, ..., input10.txt.

Входные данные

В первой строке дано целое число $$$t$$$ ($$$0 \le t \le 10$$$) — номер теста.

В следующей строке даны целые числа $$$n$$$, $$$m$$$ и $$$q$$$ ($$$1 \le n \le 500$$$, $$$1 \le m, q \le 1000$$$) — количество островов, количество возможных маршрутов и количество запусков решения соответственно.

В следующей строке даны целые числа $$$s_{min}$$$ и $$$s_{max}$$$ ($$$1 \le s_{min} \lt s_{max} \le 10^{12}$$$) — константы, используемые при оценке решения. Подробнее про эти величины смотрите в разделе «Система оценки».

В каждой из следующих $$$m$$$ строк даны целые числа $$$a_i$$$, $$$b_i$$$, $$$w_i$$$ и $$$p_i$$$ ($$$1 \le a_i, b_i \le n$$$, $$$a_i \ne b_i$$$, $$$1 \le w \le 10^6$$$, $$$1 \le p_i \le 100$$$) — номера островов, которые соединяет $$$i$$$-й маршрут, время, необходимое для его прохождения, и вероятность доступности в процентах соответственно.

Протокол взаимодействия

В начале каждого хода программа жюри сообщит вам номера доступных маршрутов, исходящих из текущего острова, в формате $$$k$$$ $$$v_1$$$ $$$v_2$$$ $$$...$$$ $$$v_k$$$ ($$$1 \le k \le n$$$, $$$1 \le v_i \le m$$$) — количество маршрутов и их номера соответственно.

После этого ваша программа должна вывести одно число в отдельной строке — номер маршрута, по которому нужно перейти. Если после перехода вы оказались в вершине $$$n$$$, взаимодействие прекращается. Вы не можете делать более $$$2000$$$ переходов.

Если после перехода вместо значения $$$k$$$ вы получите целое число $$$0$$$, то это означает, что ваша программа сделала некорректный переход или превысила лимит в $$$2000$$$ переходов. Тогда ваша программа должна немедленно завершиться. В противном случае можно получить произвольный вердикт, поскольку решение будет продолжать считывать данные из закрытого потока.

После вывода запроса не забудьте вывести перевод строки и сбросить буфер вывода. В противном случае вы получите вердикт Idleness limit exceeded. Для сброса буфера используйте:

  • fflush(stdout) или cout.flush() в C++;
  • System.out.flush() в Java;
  • flush(output) в Pascal;
  • stdout.flush() в Python;
Система оценки

Если вы нарушили протокол взаимодействия или совершили более $$$2000$$$ переходов, вы получаете $$$0$$$ баллов за тест.

Иначе пусть суммарное время по всем запускам в вашем решении равно $$$s$$$. Если $$$s \lt s_{min}$$$, то вы получаете $$$10$$$ баллов за тест. Если $$$s \gt s_{max}$$$, то вы получаете $$$0$$$ баллов за тест. Иначе ваш балл равен $$$10 \cdot (\frac{s_{max} - s}{s_{max} - s_{min}})^2$$$.

Баллы за каждый тест округляются вверх до сотых и суммируются. Правила округления таковы, что, например, при округлении числа $$$10.112$$$ вверх до сотых получаем число $$$10.12$$$.

Пример
Входные данные
0
6 9 1
8 16
1 2 4 100
1 3 1 30
2 3 2 25
2 4 1 10
2 5 9 100
3 5 2 100
4 6 4 100
5 4 2 10
5 6 6 100
2 1 2

1 6

1 9
Выходные данные













2

6

9