Дорога на олимпиаду
문제
Успешно решив все задачи отборочного этапа, Миша получил приглашение принять участие в очном туре Закрытой олимпиады школьников по информатике. Миша планирует добираться до места проведения олимпиады самолётами, при этом он хочет совершить не более одной пересадки, то есть использовать не более двух рейсов. Разумеется, среди всех таких вариантов его интересует самый дешёвый.
Жюри Закрытой олимпиады держит место и дату проведения очного этапа олимпиады в строжайшем секрете, а Миша очень любит путешествовать, поэтому не может заранее знать, из какого города он будет начинать свой путь. Кроме того, периодически появляются новые регулярные рейсы, а некоторые старые наоборот исчезают из расписания, поэтому Миша просит вас написать программу, которая будет отвечать на следующие запросы:
- Добавить новый регулярный рейс.
- Удалить некоторый рейс.
- Определить минимальную стоимость маршрута между двумя городами, если рассматривать только маршруты без пересадок и маршруты с одной пересадкой.
Каждый рейс связывает некоторую пару городов и , и имеет свою стоимость . Все рейсы двусторонние, то есть позволяют добраться как из города в город , так и наоборот, из города в город .
입력
В первой строке входных данных записаны два целых числа и (, ) --- количество городов и количество уже доступных рейсов соответственно.
Следующие строк описывают имеющиеся рейсы. В -й из этих строк записаны три целых числа , и (, , ) --- номера городов, которые связывает -й регулярный рейс, и его стоимость.
В следующей строке записано одно целое число () --- количество запросов.
Каждая из последующих строк содержит описание запроса в одном из трёх форматов:
- (, , ) соответствует добавлению регулярного рейса между городами и стоимостью .
- (, ) соответствует отмене регулярного рейса между городами и . Гарантируется, что в момент поступления такого запроса, города и соединены регулярным рейсом.
- (, ) означает, что Миша хочет знать самый дешёвый способ добраться из города в город , при условии использования не более, чем одной пересадки.
Гарантируется, что в любой момент времени между каждой парой городов существует не более одного регулярного рейса. Дополнительно гарантируется, что во входных данных присутствует хотя бы один запрос третьего типа.
출력
Для каждого запроса третьего типа выведите минимальную стоимость поездки с использованием не более одной пересадки. Если между указанной парой городов вовсе не существует подходящих маршрутов, то выведите .
힌트
Рассмотрим пример. Для запросов третьего типа перечислим оптимальные маршруты в порядке появления этих запросов во входных данных:
- Через город (хотя существует и прямой рейс, он не является наиболее выгодным маршрутом).
- Через город .
- Через город .
- Через город .
- Подходящего маршрута не существует.
- Прямой рейс.
- Через город .
- Через город .
- Подходящего маршрута не существует.
예제
예제 1
5 6 1 2 3 1 3 8 2 3 4 2 4 7 3 4 1 4 5 7 13 3 1 3 3 1 4 2 1 3 3 1 4 1 1 3 0 3 1 4 3 1 5 3 3 4 1 1 4 1 3 2 4 3 2 5 2 4 5 3 2 5
7 9 10 1 -1 1 4 14 -1