using System; using System.Collections.Generic; using System.Collections; using System.Collections.Specialized; using System.Linq; using System.Text; using System.IO; using System.Reflection; using static System.Math; using System.Numerics; static class Program{ const int mod=(int)1e9+7; static void Main(){ Sc sc=new Sc(); var n=sc.L-2; long[][] g=new long[][]{ new long[]{0,0,1,1,0,0}, new long[]{1,0,0,0,0,0}, new long[]{0,1,0,0,0,0}, new long[]{0,0,0,0,1,1}, new long[]{0,0,0,1,0,0}, new long[]{0,0,0,0,0,1} }; long[][] b=new long[][]{ new long[]{1}, new long[]{0}, new long[]{0}, new long[]{1}, new long[]{1}, new long[]{1} }; long[][] c=Mp(b,g,n); Console.WriteLine("{0}",c[2][0]); } static long[][] Mp(long[][] r,long[][] x,long e){ while(e>0){ if((e&1)>0){r=Mm(x,r);} x=Mm(x,x); e>>=1; } return r; } static long[][] Mm(long[][] a,long[][] b){ long[][] q=new long[a.Length][]; for(int j=0;j(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i