Memes

Time limit: 1.5s Memory limit: 512MB Input: memes.in Output: memes.out

Gimi a devenit noul coordonator de divertisment al platformei GuguștiucShorts! El știe că pe platforma lui sunt înscriși NN utilizatori, iar pentru fiecare user ii știe ce memă (eng. meme --- o idee, de obicei hazlie, materializată într-o imagine, un clip sau un text, care se răspândește prin intermediul internetului) viv_i i-ar apărea dacă ar intra pe rețea. Fiecare memă este codificată printr-un număr natural.

Exemplu cu caracter ilustrativ\text{Exemplu cu caracter ilustrativ}

Cum Gimi este un coordonator responsabil, el poate să modifice conținutul utilizatorului i (1iN)i \ (1 \leq i \leq N) preluând conținut:

  • din dreapta: dacă i<Ni < N, mema utilizatorului ii devine aceeași cu mema utilizatorului i+1i + 1;
  • din stânga: dacă i>1i > 1, mema utilizatorului ii devine aceeași cu mema utilizatorului i1i - 1.

De exemplu, dacă șirul de meme-uri era [1,2,3,4][1, 2, 3, 4] și aplicăm o operație asupra utilizatorului 22, din dreapta, șirul devine [1,3,3,4][1, 3, 3, 4], iar dacă mai aplicăm încă o operație asupra șirului rezultat pe poziția 33, din dreapta, șirul devine [1,3,4,4][1, 3, 4, 4]. De asemenea, dacă facem o operație asupra utilizatorului 22, din stânga, pe șirul [1,2,3,4][1, 2, 3, 4], obținem șirul [1,1,3,4][1, 1, 3, 4].

Cerință

Gimi, curios de fel, vrea să afle, plecând de la un șir inițial vv, în câte șiruri distincte îl poate transforma aplicând operația descrisă mai sus de oricâte (eventual 00) de ori. Răspunsul va fi afișat modulo 109+710^9 + 7.

Date de intrare

Pe prima linie a fișierului de intrare memes.in se găsește un număr natural NN, care reprezintă numărul de utilizatori ai platformei. Pe următoarea linie din fișierul de intrare se va găsi un șir vv de NN numere naturale, unde viv_i reprezintă mema asignată utilizatorului ii.

Date de ieșire

În fișierul de ieșire memes.out se va afișa un singur număr, care reprezintă numărul de șiruri distincte la care poate ajunge Gimi aplicând operația descrisă mai sus, modulo 109+710^9 + 7.

Restricții și precizări

  • 1N10 0001 \leq N \leq 10 \ 000
  • 1viN1 \leq v_i \leq N pentru orice 1iN1 \leq i \leq N.
  • Doua șiruri se consideră distincte dacă diferă în cel puțin o poziție.
# Scor Restricții
1 6 N8N \leq 8
2 10 N18N \leq 18
3 7 Numerele din șir sunt distincte două câte două.
4 9 1vi21 \leq v_i \leq 2, pentru orice 1iN1 \leq i \leq N
5 22 N500N \leq 500
6 19 N2 000N \leq 2 \ 000 și 1vi501 \leq v_i \leq 50, pentru orice 1iN1 \leq i \leq N
7 27 Fără restricții suplimentare.

Exemplul 1

memes.in

3
1 2 1

memes.out

7

Explicație

Șirurile posibile la care putem ajunge sunt: (1 1 1)(1 \ 1 \ 1), (1 1 2)(1 \ 1 \ 2), (1 2 1)(1 \ 2 \ 1), (1 2 2)(1 \ 2 \ 2), (2 1 1)(2 \ 1 \ 1), (2 2 1)(2 \ 2 \ 1), (2 2 2)(2 \ 2 \ 2), deci 77 șiruri distincte.

Exemplul 2

memes.in

3
1 1 1

memes.out

1

Explicație

Indiferent de câte ori aplicăm operația, ajungem la șirul inițial (1 1 1)(1 \ 1 \ 1). Deci avem un singur șir distinct.

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