# Cerință

Se dă un șir $a$ de lungime $N$ pe care trebuie să gestionați $Q$ operații. Acestea sunt de două tipuri, codificate după cum urmează:
* `0 st dr x`: $a[i] = \min(a[i], x)$ pentru $st \leq i \leq dr$;
* `1 st dr`: afișați $\sum\limits_{i=st}^{dr} a[i]$.

# Date de intrare

Pe prima linie se regăsesc numerele $N$ si $Q$. Pe a doua linie se află șirul $a$ (indexat de la $1$). Pe următoarele $Q$ linii avem câte o operație.

# Date de ieșire

Răspunsurile la operațiile de tip `1`, fiecare pe o linie individuală.

# Restricții și precizări

* $1 \leq N, Q \leq 2\cdot10^{5}$
* $0 \leq a[i], x \leq 10^9$
* $1 \leq st \leq dr \leq N$
* Este recomandat să folosiți următoarea linie de cod la începutul funcției `main`, va reduce timpul alocat citirii datelor de intrare: `cin.tie(0)->sync_with_stdio(0);`.

# Exemplu

`stdin`
```
3 2
1 2 3
0 1 3 1
1 1 3
```

`stdout`
```
3
```

## Explicație

După prima operație, șirul devine $[1,1,1]$. Suma indicilor de la $1$ la $3$ este $3$.
