using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Text; using System.Text.RegularExpressions; using System.Linq; using System.IO; class Program { static void Main() { new Magatro().Solve(); } } class Magatro { const long Mod = (long)1e9 + 7; private long N; private long Fib(long n, long mod) { long[,] r = new long[,] { { 1, 1 }, { 1, 0 } }; long[,] res = new long[,] { { 1, 1 }, { 1, 0 } }; while (n > 0) { if (n % 2 == 1) { res = F(res, r, mod); } n /= 2; r = F(r, r, mod); } return res[1, 1]; } private long[,] F(long[,] a, long[,] b, long mod) { var result = new long[2, 2]; result[0, 0] = (a[0, 0] * b[0, 0] + a[0, 1] * b[1, 0]) % mod; result[1, 0] = (a[0, 0] * b[1, 0] + a[0, 1] * b[1, 1]) % mod; result[0, 1] = (a[1, 0] * b[0, 0] + a[1, 1] * b[1, 0]) % mod; result[1, 1] = (a[1, 0] * b[1, 0] + a[1, 1] * b[1, 1]) % mod; return result; } public void Solve() { N = long.Parse(Console.ReadLine()); Console.WriteLine(Fib(Fib(N, Mod * 2 + 2), Mod)); } }