Олимпийские Авиалинии
Император Олимпии решил соединить N городов империи воздушным транспортом. Придворному программисту было приказано написать программу под названием ОлимпСтрой, которая упрощает процесс построения карты авиарейсов. Эта программа должна выполнять операции двух типов, каждая из которых зависит от трех параметров A, B и C:
Создать новый рейс из города A в город B, перелет по которому занимает C минут.
Рассмотреть все авиарейсы, которые начинаются в городе A. Пусть рейс номер i из них заканчивается в городе v_i и занимает t_i минут. Для каждого такого i создать рейс из города B в город v_i, который занимает t_i + С минут.
После выполнения всех операций программа должна для каждого города найти наименьшее время, требуемое для перелета в него из столицы, возможно с пересадками в других городах. Считается, что время посадки, высадки и ожидания в аэропорту равны нулю.
Между двумя городами может быть больше одного рейса, причем перелеты по ним могут занимать разное время. Возможно существование рейсов, которые начинаются и заканчиваются в одном и том же городе. Все рейсы односторонние, то есть наличие рейса из города A в город B еще не гарантирует наличие рейса из города B в город A.
Напишите программу, которая по последовательности из M операций описанных выше типов, выполненных программой ОлимпСтрой, для каждого города, кроме столицы, найдет наименьшее время, требуемое для перелета из столицы в этот город.
Входные данные
Первая строка содержит два целых числа N и M (2 ≤ N ≤ 10^5, 1 ≤ M ≤ 10^5) - количество городов в империи Олимпия и количество операций, выполненных программой ОлимпСтрой. В каждой из следующих M строк содержится информация об очередной операции. Первое число в строке равно 1, если выполняемая операция имеет первый тип, и 2, если второй. Далее записаны три целых числа A, B и C (1 ≤ A ≤ N, 1 ≤ B ≤ N, -10^8 ≤ C ≤ 10^8), значение которых описано выше. Города нумеруются числами от 1 до N; столица имеет номер 1. Гарантируется, что время перелета по каждому из рейсов будет строго положительным.
Выходные данные
Вывести N - 1 строку. В i-й из них должно содержаться наименьшее время в минутах, за которое можно долететь из столицы в город с номером i + 1. Если до какого-то города добраться невозможно, выведите в соответствующей строке число -1.