Цього року на олімпіаді з інформатики беруть участь учнів. Учасники пронумеровані від до .
Завдяки новій системі, вони можуть бачити свої бали одразу після відправлення розв'язку задачі. Від результату перевірки настрій учасника може значно змінитися. На початку олімпіади настрій усіх учасників дорівнює одиниці.
Є історія змін настрою учасників. Журі хоче контролювати настрій усіх учасників і просить вас про допомогу.
У вас є три види запитів:
0 L R P - Журі хоче дізнатися добуток настрою всіх учасників, пронумерованих від до . Оскільки це число може бути занадто великим, потрібно вивести його за модулем ;
1 L R X - Всі учасники з номерами від до дізналися результат перевірки, і настрій кожного з них помножився на число ;
2 L R X - Всі учасники з номерами від до дізналися результат перевірки, і настрій кожного з них поділився на число . Гарантується, що настрій кожного учасника на цьому відрізку ділиться на число .
У першому рядку знаходяться числа і — кількість учасників та кількість запитів. У наступних рядках описуються запити. Відомо, що у всіх запитах 1 \leq L \leq R \leq n, 1 \leq X \leq 100, 1 \leq P \leq 10^9, 1 \leq n, m \leq 50000.
Для кожного запиту типу 0 вивести відповідь в окремому рядку.
Приклад 1
Приклад 2