Hide

Problem I
Triolingo Push

Languages en sv

Trio från Triolingo vill påminna dig om att ta dina dagliga programmeringslektioner!

/problems/triolingopush/file/statement/sv/img-0001.JPG
cc by-s

För att Trio ska se till att lektionen verkligen blir genomförd, skickar Trio flera notifikationer enligt följande ökande mönster:

Den första dagen skickar Trio $1$ notifikation. Den andra dagen skickar Trio $2$ notifikationer. Sedan för varje dag som går efter den andra dagen, skickar Trio antalet notifikationer dagen innan adderat med antalet notifikationer Trio skickade $2$ dagar innan, adderat med $1$ extra notifikation. Man kan även beskriva antalet notifikationer för en specifik dag med följande funktion:

\[ f(1)=1,f(2)=2,f(N)=f(N-1)+f(N-2)+1. \]

För en specifik dag $N$, kommer Trio att skicka ut $f(N)$ notiser.

Hur många notifikationer skickar Trio vid dag nummer $N$? För att garantera att antalet notifikationer ska få plats på skärmen, skriv ut heltalet modulo $10^9+7$.

Indata

Indatan består av endast en rad med ett heltal, $N$, dagen som Trio skickar notifikationer.

Utdata

Skriv ett heltal - Antalet notifikationer som Trio skickar dag $N$ modulo $10^9+7$.

Poängsättning

Din lösning kommer att testas på ett antal testfallsgrupper. För att få poäng för en grupp så måste du klara alla testfall i gruppen.

Grupp

Poängvärde

Gränser

$1$

$20$

$1 \leq N \leq 3$

$2$

$20$

$1 \leq N \leq 25$

$3$

$60$

$1 \leq N \leq 10^6$

$4$

$1$

$1 \leq N \leq 10^{18}$

Sample Input 1 Sample Output 1
1
1
Sample Input 2 Sample Output 2
4
7
Sample Input 3 Sample Output 3
5
12