#include <stdio.h>
#include <string.h>
long long n,a[2],b[2][2]={0,4,1,3},mod=1e9+7;
void Matrix1(long long x[2],long long y[2][2])
{
long long c[2];
memset(c,0,sizeof(c));
for(int j=0;j<2;j++)
{
for(int k=0;k<2;k++)
{
c[j]=(c[j]+(x[k]%mod*y[k][j]%mod))%mod;
}
}
for(int i=0;i<2;i++)
{
x[i]=c[i]%mod;
}
}
void Matrix2(long long x[2][2],long long y[2][2])
{
long long c[2][2];
memset(c,0,sizeof(c));
for(int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
{
for(int k=0;k<2;k++)
{
c[i][j]=(c[i][j]+(x[i][k]%mod)*(y[k][j]%mod))%mod;
}
}
}
for(int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
{
x[i][j]=c[i][j]%mod;
}
}
}
int main()
{
scanf("%lld%lld%lld",&n,&a[0],&a[1]);
n--;
while(n)
{
if(n&1) Matrix1(a,b);
Matrix2(b,b);
n>>=1;
}
printf("%lld",a[0]);
return 0;
}