B - Distribuciones Ordenadas

Languages: C, C++, Java, Haskell, Pascal, Python, JavaScript, Tiger, C#
Time & Memory limits: (details)

Fito está creando un problema para ponerlo en un concurso de la copa UH. Ya tiene casi todo listo y solo le falta hacer los casos de prueba. La entrada del problema que está haciendo es un arreglo de $N$ enteros, donde cada uno de ellos está entre $1$ y $N$, pero pueden estar repetidos. Debido a la naturaleza del problema los elementos de la entrada deben estar ordenados en forma no decreciente o en forma no creciente. Fito quiere saber para un tamaño $N$ cuántos arreglos distintos puede formar.

Input

La entrada es un entero $N$ ($1 \leq N \leq 10^5$) en una línea que representa la cantidad de elementos en el arreglo.

Output

La salida debe ser una línea con la cantidad de arreglos que se pueden formar. Como este número puede ser muy grande se debe imprimir el resto de su división por $1,000,000,007$.

Sample test(s)

Input
3
Output
17