MOD = 10**9 + 7 def calc_fib(n, mod): if mod == 0: return 0 if n == 0: return 0 # Generate the binary digits of n, MSB to LSB bits = [] m = n while m > 0: bits.append(m % 2) m >>= 1 bits.reverse() a, b = 0, 1 # F(0), F(1) for bit in bits: c = a * (2 * b - a) % mod d = (a * a + b * b) % mod if bit: a, b = d % mod, (c + d) % mod else: a, b = c % mod, d % mod return a n = int(input()) tau = 2 * (MOD + 1) # Calculated Pisano period for MOD = 10^9 + 7 # Calculate fib(n) mod tau to handle huge Fibonacci numbers fib_n_mod_tau = calc_fib(n, tau) # Calculate fib(fib_n_mod_tau) mod MOD result = calc_fib(fib_n_mod_tau, MOD) print(result % MOD)