Фаброзаври-дизайнери#3507

Фаброзаври-дизайнери

3 секунди
122,486 мегабайта
Легка

Фаброзаври відомі своїми тонкими художніми уподобаннями та захопленням ландшафтним дизайном. Вони живуть поблизу дуже мальовничої річки і частенько перебудовують стежинку, яка йде вздовж річки: або насипають додаткової землі, або зривають те, що є. Для того, щоб спростити ці роботи, вони поділили усю стежинку на горизонтальні ділянки пронумеровані від до , і їх перебудови влаштовані завжди однаково: вони вибирають частину дороги від -ї до -ї ділянки (включно) і змінюють (зменшують чи збільшують) висоту на усіх цих ділянках на одну й ту ж величину (якщо до початку перебудови висоти були різними, то і після перебудови вони залишаться різними).

Оскільки, як уже було сказано, у фаброзаврів тонкі художні уподобання, кожен з них вважає, що їхня річка краще усього виглядає з певної висоти. Тому їм хочеться знати, чи є поблизу від їх домівки місце на стежинці, де висота на їх погляд оптимальна. Допоможіть їм у цьому розібратись.

Вхідні дані

Перший рядок містить два числа та - довжину дороги та кількість запитів відповідно (1 \leq n, m \leq 10^5). У другому рядку міститься чисел, відокремлених пропусками - початкові висоти відповідних частин дороги; висоти не перевищують 10^4 за модулем. У наступних рядках містяться запити по одному у рядку.

Запит +\ L\ R\ X означає, що висоту частин дороги від -ої до -ої (включно) потрібно змінити на . При цьому 1 \leq L \leq R \leq n, а |X| \leq 10^4.

Запит ?\ L\ R\ X означає, що потрібно перевірити, чи є між -ою та -ою ділянками (включаючи ці ділянки) ділянка, де дорога проходить точно на висоті . Гарантується, що 1 \leq L \leq R \leq n, а |X| \leq 10^9.

Вихідні дані

На кожен запит другого типу потрібно вивести в окремому рядку слово "YES" (без лапок), якщо потрібна ділянка існує, і "NO" у протилежному випадку.

Приклади

Приклад 1

Loading
Loading