Fie șirul , indexat de la , inițial vid. Pe acesta se efectuează următoarele tipuri de operații:
1 p val
— se inserează un element roșu la poziția cu valoarea2 p val
— se inserează un element negru la poziția cu valoarea3
— se calculează suma elementelor dintre poziția ultimului element roșu inserat și poziția ultimului element negru inserat
Se garantează că toate operațiile sunt valide: este mai mic sau egal decât lungimea curentă a șirului, iar o operație de tipul se va efectua doar după ce șirul conține cel puțin un element roșu și cel puțin un element negru.
Cerință
Să se afișeze suma tuturor valorilor calculate de operațiile de tip , modulo .
Date de intrare
Pe prima linie se găsește un număr natural , ce reprezintă numărul de operații efectuate. Următoarele linii reprezintă, în ordine, operațiile efectuate. Primul element de pe fiecare linie reprezintă tipul ei (1
, 2
sau 3
). Dacă tipul unei operații este sau , pe acea linie se regăsesc și valorile și .
Date de ieșire
Să se afișeze restul împărțirii la a sumei tuturor valorilor calculate la operațiile de tip .
Restricții și precizări
- ;
- ;
- Sumele calculate în cadrul operațiilor de tip includ și capetele subsecvențelor;
- Pentru teste în valoare de de puncte, ;
- Pentru restul de de puncte, nu există restricții suplimentare.
Exemplu
stdin
6
1 0 1
1 0 2
2 1 3
3
2 0 4
3
stdout
11
Explicație
1 0 1 => V = [1]
1 0 2 => V = [2, 1]
2 1 3 => V = [2, 3, 1]
3 => S += 5
2 0 4 => V = [4, 2, 3, 1]
3 => S += 6