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; const double eps=1e-11; static void Main(){ Sc sc=new Sc(); var s=sc.La; var g=new long[][]{new long[]{s[1]%mod,s[1]%mod},new long[]{0,1}}; var b=new long[][]{new long[]{0},new long[]{s[0]%mod}}; var c=Mp(b,g,s[2]); Console.WriteLine("{0}",c[0][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){ var 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