using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Problem533 { class Program { const long M = 1000000007; static void Main(string[] args) { int N = int.Parse(Console.ReadLine()); if(N == 1 || N == 2) { Console.WriteLine(1); return; } else if(N == 3) { Console.WriteLine(3); return; } long[,] dp = new long[N + 1, 4]; dp[1, 1] = 1; dp[2, 2] = 1; dp[3, 3] = 1; dp[3, 2] = 1; dp[3, 1] = 1; for(int i = 4; i <= N; i++) { dp[i, 1] = (dp[i - 1, 2] + dp[i - 1, 3]) % M; //Console.WriteLine("dp[{0},1] = {1}", i, dp[i, 1]); dp[i, 2] = (dp[i - 2, 1] + dp[i - 2, 3]) % M; //Console.WriteLine("dp[{0},2] = {1}", i, dp[i, 2]); dp[i, 3] = (dp[i - 3, 1] + dp[i - 3, 2]) % M; //Console.WriteLine("dp[{0},3] = {1}", i, dp[i, 3]); } Console.WriteLine(((dp[N,1] + dp[N, 2]) % M + dp[N,3]) % M); } } }