ГеоИгра
Алимжан много играет в интересные игры. Одной из таких игр является ГеоИгра. В этой игре Вы находитесь на плоскости, Ваша позиция описывается точкой (x, y). Есть враги с особыми способностями: маги, воины и обманщики. Их цель - сбить с толку Алимжана по поводу его положения, чтобы он не знал, где он находится. Каждый из них может так или иначе повлиять на позицию Алимжана:
x y - воин стучит и толкает на x вдоль оси OX, и на y вдоль оси OY.
a b - маг в точке (0, 0) вращает Вас вокруг своей позиции на a * π / b радиан против часовой стрелки.
b x y - обманщик отправляет Вас в зеркальный мир: он создает бесконечное зеркало (некую линию), так что Алимжан переходит в свое зеркальное отражение.
Ваши враги могут совершить n действий: A[1]
, A[2]
, ..., A[n]
. Алимжан устал от игр, поэтому просит Вас ответить на q вопросов: каково его новое положение после выполнения операций A[l]
, ..., A[r]
(именно в этом порядке), если его начальное положение (x, y)?
Входные данные
Первая строка содержит число n (1 ≤ n ≤ 3 * 10^5
). Следующие n строк описывают n действий - каждое действие начинается типом t операции:
1 x y - действие воина (|x| ≤ 100, |y| ≤ 100)
2 a b - действие мага (|a| ≤ b ≤ 42)
3 b x y - действие обманщика - зеркало (линия) определяется 2 точками (b, 0) и (x, y) (|b|, |x|, |y| ≤ 100).
В (n + 1)-ой строке Вам задано количество запросов q (1 ≤ q ≤ 3 * 10^5
).
Следующие q строк содержат запросы. Каждый запрос задается 4 целыми числами в формате l r x y (1 ≤ l ≤ r ≤ n).
Выходные данные
Для каждого из q запросов выведите окончательную позицию в виде двух действительных чисел. Ваш ответ считается правильным, если абсолютная или относительная ошибка не превышает 10^(-4)
.