E. Рука робота
ограничение по времени на тест
8 секунд
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Роджер — робот. У него есть рука, представляющая собой последовательность из n соединённых друг с другом отрезков. Концы i-го отрезка изначально расположены в точках с координатами (i - 1, 0) и (i, 0). У i-го отрезка конец в (i - 1, 0) окрашен в красный цвет, а конец в (i, 0) — в синий. Таким образом, синий конец i-го отрезка касается красного конца (i + 1)-го отрезка для всех соответствующих i.

Роджер может двигать рукой двумя различными способами:

  1. Он может выбрать отрезок и увеличить его длину. Пусть был выбран отрезок i и длина l, тогда изменение происходит описанным дальше образом. Красный конец отрезка номер i и отрезки от 1 до i - 1 фиксируются. Посмотрим на луч от красного конца до синего конца i-го отрезка. Синий конец и отрезки от i + 1 до n переносятся на l в направлении этого луча.

    На этой иллюстрации красный конец помечен А, а отрезки до А остаются на своём месте, в то время как синий конец помечен В и отрезки после B переносятся вдоль луча.

  2. Он может выбрать отрезок и повернуть его. Пусть был выбран отрезок номер i и угол a. Красный конец i-го отрезка и все отрезки от 1 до i - 1 останутся на месте. Синий конец этого отрезка и отрезков от i + 1 до n будут вращаться по часовой стрелке на угол a градусов вокруг красной точки.

    На этой иллюстрации красный конец помечен А, а отрезки до А остаются на местах, в то время как синий конец помечен как B и отрезки после В повернутся вокруг точки А.

    Роджер будет двигать рукой m раз. Эти преобразования немного сложные, поэтому Роджер быстро путается и перестаёт понимать, где находится синий конец последнего отрезка. Помогите ему вычислить координаты синего конца последнего отрезка после применения каждой операции. Обратите внимание, что во время выполнения всех действий рука Роджера может произвольно пересекаться сама с собой.

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

В первой строке входных данных записано два целых числа n и m (1 ≤ n, m ≤ 300 000) — количество отрезков, составляющих руку, и количество движений, сделанных Роджером, соответственно.

В каждой из следующих m строк записано по три целых числа xi, yi и zi, описывающих соответствующий ход. Если xi = 1, это описывает ход 1-го типа, где yi обозначает номер отрезка, а zi обозначает увеличение длины. Если xi = 2, то это описание хода второго типа, где yi обозначает номер отрезка, а zi обозначает угол в градусах (1 ≤ xi ≤ 2, 1 ≤ yi ≤ n, 1 ≤ zi ≤ 359).

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

Выведите m строк. В i-ой строке должны быть записаны два вещественных числа, обозначающие координаты синего конца последнего отрезка после завершения операций 1, ..., i. Ваш ответ будет считаться правильным, если его абсолютная или относительная ошибка не будет превосходить 10 - 4.

А именно: пусть ваш ответ равен a, а ответ жюри — b. Проверяющая программа будет считать ваш ответ правильным, если .

Примеры
Входные данные
5 4
1 1 3
2 3 90
2 5 48
1 4 1
Выходные данные
8.0000000000 0.0000000000
5.0000000000 -3.0000000000
4.2568551745 -2.6691306064
4.2568551745 -3.6691306064
Примечание

Следующие картинки иллюстрируют пример и показывают состояние руки после каждой операции. Координаты точки F выведены после применения каждой операции. Для простоты мы показываем только синие концы отрезка (за исключением красного конца первого). Например, точка, помеченная В, является синим концом отрезка 1, а также красным концом отрезка 2.

Начальное состояние:

Увеличить длину отрезка 1 на 3.
Повернуть отрезок 3 на 90 градусов по часовой стрелке.
Повернуть отрезок 5 на 48 градусов по часовой стрелке.
Увеличить длину отрезка 4 на 1.