require 'set' mod1=1000000007 def f(a1,a2) a1.each{|e| a2.push([e[0].reverse(),e[1].reverse]) } end def g(all,es) es.each{|e1| e1.each{|e2| all.push([e2[0],e2[1],1]) } } end def f2(perm,perm2) res=[] h1={} h2=Hash.new(0) perm2.each{|e| if !h1.key?(e[0]) then h1[e[0]]=[[e[1],e[2]]] else h1[e[0]].push([e[1],e[2]]) end } mod1=1000000007 perm.each{|e1| left=e1[0] r1=e1[1] p1=e1[2] if h1.key?(r1) then h1[r1].each{|e3| right=e3[0] p2=e3[1] h2[[left,right]]+=(p1*p2)%mod1 } end } h2.each{|k,v| res.push([k[0],k[1],v]) } return res end all=[] a111=[ ["0001","1000"], ["1000","0001"]] a110=[ ["1000","0010"], ["1023","0001"], ["0010","1000"], ["0001","3021"]] a011=[] f(a110,a011) a101=[ ["1230","0001"], ["1203","0010"], ["1000","0123"], ["0100","1023"], ["3021","0100"], ["0321","1000"], ["0001","3210"], ["0010","3201"]] a100=[ ["0123","1023"], ["0100","1000"], ["0321","3021"], ["3021","0321"], ["1000","0100"], ["1023","0123"], ["0010","3210"], ["0001","3201"], ["1230","0010"], ["1203","0001"]] a001=[] f(a100,a001) a010=[ ["0010","0100"], ["0100","0010"], ["3201","3021"], ["1203","1023"], ["1023","1203"], ["3021","3201"], ["0123","0001"], ["0001","0321"], ["1000","1230"], ["3210","1000"]] a000=[ ["1000","1000"], ["0100","0100"], ["0010","0010"], ["0001","0001"], ["1230","1230"], ["1203","1203"], ["1023","1023"], ["0123","0123"], ["0321","0321"], ["3201","3201"], ["3021","3021"], ["3210","3210"]] g(all,[a000,a001,a010,a100,a011,a101,a110,a111]) s=[ ["0000","1000",1], ["0000","0100",1], ["0000","0010",1], ["0000","0001",1], ["0000","1230",1], ["0000","1203",1], ["0000","1023",1], ["0000","0123",1]] g=[ ["0001","0000",1], ["0010","0000",1], ["0100","0000",1], ["1000","0000",1], ["1203","0000",1], ["1230","0000",1], ["1023","0000",1], ["0123","0000",1] ] n=gets.to_i n=n-1 perm2=[] allPerm=[] s.each{|e| allPerm.push([e[0],e[1],1]) } all.each{|e| perm2.push([e[0],e[1],1]) } while n>0 if n%2==1 then allPerm=f2(allPerm,perm2) end perm2=f2(perm2,perm2) n=n/2 end ans=f2(allPerm,g) puts ans[0][2]%mod1