Dacii liberi și-au ascuns comoara în una dintre cele camere ale cetății. Fiecare cameră este păzită de un loial slujitor. Te-ai infiltrat în cetate cu scopul de a găsi comoara, așa că începi să bați la uși.
Dacă ai bate la ușa , slujitorul ți-ar spune dacă comoara se află într-o cameră din stânga camerei , din dreapta camerei sau chiar în camera . Slujitorul este om bun, dar o mică atenție îl va face să-și aducă mai bine aminte unde se află comoara, așa că îl vei răsplati complet voluntar cu kosoni. De vreme ce vrei să oferi o experiență unică fiecărui slujitor, valorile vor forma o permutare a mulțimii .
Pentru ca totul să meargă fără probleme, îți imaginezi scenarii de tipul: "Dacă comoara se găsește în intervalul de camere , care ar fi numărul minim de kosoni pe care îi voi oferi slujitorilor, în cel mai rău caz, pentru a găsi comoara?". De vreme ce răspunsul poate să fie foarte mare, se cere restul său la împărțirea cu .
Date de intrare
Pe prima linie se află numerele și . Pe următoarea linie se află numere naturale nenule distincte. Pe următoarele linii se găsesc câte două numere , reprezentând scenariul .
Date de ieșire
Se vor afișa linii, pe linia se va găsi răspunsul pentru cel de-al -lea scenariu, modulo .
Restricții
- Șirul este o permutare.
Subtask 1 (3 puncte)
Subtask 2 (6 puncte)
Subtask 3 (23 puncte)
Subtask 4 (52 puncte)
Subtask 5 (16 puncte)
- Fără restricții suplimentare
Exemple
stdin
8 3
3 5 8 1 6 7 2 4
2 7
5 6
3 8
stdout
70
64
68
stdin
10 3
2 8 3 9 7 10 5 6 4 1
1 10
6 6
4 5
stdout
168
0
128