Фаброзаври-дизайнери
Фаброзаври відомі своїми тонкими художніми уподобаннями та захопленням ландшафтним дизайном. Вони живуть поблизу дуже мальовничої річки і частенько перебудовують стежинку, яка йде вздовжь річки: або насипають додаткової землі, або зривають те, що є. Для того, щоб спростити ці роботи, вони поділили усю стежинку на горизонтальні ділянки пронумеровані від 1 до n, і їх перебудови влаштовані завжди однаково: они вибирають частину дороги від L-ї до R-ї ділянки (включно) і змінюють (зменшують чи збільшують) висоту на усіх цих ділянках на одну й ту ж величину (якщо до початку перебудови висоти були різними, то і після перебудови вони залишаться різними).
Оскільки, як уже було сказано, у фаброзаврів тонкі художні уподобання, кожен з них вважаєт, що їхня річка краще усього виглядає з певної висоти. Тому їм хочеться знати, чи є поблизу від їх домівки місце на стежинці, де висота на їх погляд оптимальна. Допоможіть їм у цьому разібратись.
Вхідні дані
Перший рядок містить два числа n та m - довжину дороги та кількість запитів відповідно (1 ≤ n, m ≤ 10^5
). У другому рядку міститься n чисел, відокремлених пропусками - початкові висоти відповідних частин дороги; висоти не перевищують 10^4
за модулем. У наступних m рядках містяться запити по одному у рядку.
Запит + L R X означає, що висоту частин дороги від L-ої до R-ої (включно) потрібно змінити на X. При цьому 1 ≤ L ≤ R ≤ n, а |X| ≤ 10^4
.
Запит ? L R X означає, що потрібно перевірити, чи є між L-ою та R-ою ділянками (включаючи ці ділянки) ділянка, де дорога проходить точно на висоті X. Гарантується, що 1 ≤ L ≤ R ≤ n, а |X| ≤ 10^9
.
Вихідні дані
На кожен запит другого типу потрібно вивести в окремому рядку слово "YES" (без лапок), якщо потрібна ділянка існує, і "NO" у протилежному випадку.