Пожалуйста, подпишитесь на официальный канал Codeforces в Telegram по ссылке https://t.me/codeforces_official. ×

E. Новая работа Поликарпа
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Поликарп недавно устроился на новую работу. Теперь он зарабатывает так много, что его старый кошелек не может вместить все его деньги.

Купюры в Берляндии бывают различных размеров. Однако, все они имеют форму прямоугольника (возможно квадрата). Кошельки также производятся в форме прямоугольников (возможно квадратов).

Купюра $$$x \times y$$$ помещается в некоторых кошелек $$$h \times w$$$, если либо $$$x \le h$$$ и $$$y \le w$$$, либо $$$y \le h$$$ и $$$x \le w$$$. Купюры могут накладываться друг на друга, и в кошелек помещается бесконечное количество купюр. Из этого следует, что все купюры Поликарпа помещаются в кошелек тогда, когда каждая из них помещается независимо от остальных.

Теперь ваша задача — ответить на запросы двух типов:

  1. $$$+~x~y$$$ — Поликарп зарабатывает купюру размера $$$x \times y$$$;
  2. $$$?~h~w$$$ — Поликарп хочет узнать, поместятся ли все его заработанные к текущему моменту купюры в кошелек размера $$$h \times w$$$.

Гарантируется, что до первого запроса типа $$$2$$$ есть хотя бы один запрос типа $$$1$$$ и что во входных данных есть хотя бы один запрос типа $$$2$$$.

Для каждого запроса типа $$$2$$$ выведите «YES», если все заработанные к текущему моменту купюры помещаются в кошелек заданного размера. Выведите «NO» в противном случае.

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

В первой строке записано одно целое число $$$n$$$ ($$$2 \le n \le 5 \cdot 10^5$$$) — количество запросов.

В каждой из следующих $$$n$$$ строк записан запрос одного из следующих типов:

  1. $$$+~x~y$$$ ($$$1 \le x, y \le 10^9$$$) — Поликарп зарабатывает купюру размера $$$x \times y$$$;
  2. $$$?~h~w$$$ ($$$1 \le h, w \le 10^9$$$) — Поликарп хочет узнать, поместятся ли все его заработанные к текущему моменту купюры в кошелек размера $$$h \times w$$$.

Гарантируется, что до первого запроса типа $$$2$$$ есть хотя бы один запрос типа $$$1$$$ и что во входных данных есть хотя бы один запрос типа $$$2$$$.

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

Для каждого запроса типа $$$2$$$ выведите «YES», если все заработанные к текущему моменту купюры помещаются в кошелек заданного размера. Выведите «NO» в противном случае.

Пример
Входные данные
9
+ 3 2
+ 2 3
? 1 20
? 3 3
? 2 3
+ 1 5
? 10 10
? 1 5
+ 1 1
Выходные данные
NO
YES
YES
YES
NO
Примечание

Запросы типа $$$2$$$ в примере:

  1. Ни одна купюра не помещается;
  2. Обе купюры помещаются (проверяем, что информация о том, что купюры могут накладываться, принята к сведению);
  3. Обе купюры помещаются (на самом деле, обе купюры одинаковые);
  4. Все купюры помещаются (слишком много свободного места в кошельке — это не проблема);
  5. Только купюра $$$1 \times 5$$$ помещается (остальные не помещаются, поэтому ответ «NO»).