Divop

Time limit: 2s Memory limit: 256MB Input: divop.in Output: divop.out

Cerință

Divizorul magic d(x)d(x) al unui număr natural nenul xx este egal cu:

d(x)={cel mai mare divizor al lui x strict mai mic decaˆt x,daca˘ x>11,daca˘ x=1d(x) = \begin{cases} \text{cel mai mare divizor al lui x strict mai mic decât x}, & \text{dacă x>1} \\ 1, & \text{dacă x=1} \end{cases}

De exemplu, d(1)=1d(1)=1, d(3)=1d(3)=1, d(28)=14d(28)=14 și d(125)=25d(125)=25.

Se dă un șir a1,a2,,ana_1,a_2,\ldots,a_n pe care va trebui să efectuați qq operații de următorul tip:

  • l r: Pentru fiecare lirl \le i \le r, aia_i va fi înclocuit cu d(ai)d(a_i).

Afișați șirul aa în urma celor qq operații.

Date de intrare

Pe prima linie a fișierului de intrare divop.in se vor afla două numere naturale nn și qq - lungimea șirului aa, respectiv numărul de operații.

Pe a doua linie se vor afla nn numere a1,a2,,ana_1,a_2,\ldots,a_n - elementele șirului aa.

Pe fiecare din următoarele qq linii se vor afla câte două numere ll și rr - capetele operațiilor.

Date de ieșire

Fișierul de ieșire divop.out va conține nn numere, elementele șirului aa în urma efectuării celor qq operații.

Restricții și precizări

  • 1n,q31051 \le n,q \le 3 \cdot 10^5;
  • 1ai1071 \le a_i \le 10^7;
  • 1lrn1 \le l \le r \le n;
  • Pentru 1010 puncte, n,q,ai300n,q,a_i \le 300;
  • Pentru încă 1010 puncte, n,q,ai1 000n,q,a_i \le 1 \ 000;
  • Pentru încă 1010 puncte, n,q,ai5 000n,q,a_i \le 5 \ 000;
  • Pentru încă 1010 puncte, n,q5 000n,q \le 5 \ 000 și ai105a_i \le 10^5;
  • Pentru încă 1010 puncte, n,q5 000n,q \le 5 \ 000;
  • Pentru încă 1010 puncte, l=rl=r;
  • Pentru încă 2020 de puncte, n,ai105n,a_i \le 10^5;
  • Pentru încă 1010 puncte, ai105a_i \le 10^5;
  • Pentru restul de 1010 puncte, nu se impun restricții suplimentare.

Exemplu

divop.in

9 4
16 9 7 20 4 1 5 12 30
1 9
4 4
8 9
1 1

divop.out

4 3 1 5 2 1 1 3 5

Explicație

După prima operație, șirul aa va deveni [8,3,1,10,2,1,1,6,15][8,3,1,10,2,1,1,6,15].

După a doua operație, șirul aa va deveni [8,3,1,5,2,1,1,6,15][8,3,1,5,2,1,1,6,15].

După a treia operație, șirul aa va deveni [8,3,1,5,2,1,1,3,5][8,3,1,5,2,1,1,3,5].

După a patra operație, șirul aa va deveni [4,3,1,5,2,1,1,3,5][4,3,1,5,2,1,1,3,5].

Log in or sign up to be able to send submissions!