Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

P193PROH - Problem H - Lại là truy vấn trên mảng

Bạn được cho một mảng số a1, a2, ..., an. Ta c thực hiện q truy vấn thuộc 1 trong 2 loại sau:

  1. “MULTIPLY l r x” - với mọi i (l ≤ i ≤ r), thực hiện nhân ai với x.
  2. “TOTIENT l r” - in ra giá trị phi hàm Euler của tích các phần tử ai thỏa mãn l ≤ i ≤ r. Vì giá trị này có thể rất lớn, ta chỉ cần in ra giá trị lấy dư cho (109 + 7).

Phi hàm Euler của một số nguyên n là số các số nguyên x (1 ≤ x ≤ n) thỏa mãn gcd(n, x) = 1.

Input

Dòng đầu tiên chứa 2 số nguyên n và q (1 ≤ n ≤ 4⋅105, 1 ≤ q ≤ 2⋅105) - số phần tử của mảng a và số truy vấn cần thực hiện.

Dòng thứ hai chứa n số nguyên a1, a2, ..., an (1 ≤ ai ≤ 300) - n phần tử của mảng a.

q dòng tiếp theo, mỗi dòng mô tả một truy vấn:

  1. “MULTIPLY l r x” (1 ≤ l ≤ r ≤ n, 1 ≤ x ≤ 300) - thể hiện một truy vấn nhân.
  2. "TOTIENT l r" (1 ≤ l ≤ r ≤ n) - thể hiện một truy vấn yêu cầu phi hàm Euler.

Input đảm bảo có ít nhất một truy vấn thuộc loại “TOTIENT”.

Output

Với mỗi truy vấn thuộc loại “TOTIENT”, in ra kết quả cần tìm.

Example

Input
4 4
5 9 1 2
TOTIENT 3 3
TOTIENT 3 4
MULTIPLY 4 4 3
TOTIENT 4 4

Output
1
1
2

Giải thích

Ở ví dụ trên, với truy vấn đầu φ(1) = 1, φ(2)=1 ở truy vấn thứ hai và φ(6)=2 ở truy vấn cuối.


Được gửi lên bởi:adm
Ngày:2019-03-02
Thời gian chạy:1.5s
Giới hạn mã nguồn:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Ngôn ngữ cho phép:ASM32-GCC ASM32 ASM64 MAWK BC C CSHARP C++ 4.3.2 CPP CPP14 COFFEE LISP sbcl DART FORTH GO JAVA JS-RHINO JS-MONKEY KTLN OCT PAS-GPC PAS-FPC PERL PERL6 PROLOG PYTHON PYTHON3 PY_NBC R RACKET SQLITE SWIFT UNLAMBDA

© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.