http://codeforces.com/contest/1105/problem/C
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod=1e9+7;
LL N,l,r,dp[200005][3];//dp[i][j]代表i个数的和对3取余等于j的方案数
void countt(LL &a,LL &b,LL &c,LL x)
{
a=b=c=0;
while(x%3)
{
if(x%3==1)b++;
else c++;
x--;
}
a=x/3+1;
b+=x/3;
c+=x/3;
}
int main()
{
LL a,b,c;
cin>>N>>l>>r;
LL da,db,dc;
countt(da,db,dc,l-1);
countt(a,b,c,r);
a-=da,b-=db,c-=dc;
dp[1][0]=a,dp[1][1]=b,dp[1][2]=c;
for(int i=2;i<=N;i++)
{
dp[i][0]=(((dp[i-1][0]*a)%mod+(dp[i-1][1]*c)%mod)%mod+(dp[i-1][2]*b)%mod)%mod;
dp[i][1]=(((dp[i-1][0]*b)%mod+(dp[i-1][1]*a)%mod)%mod+(dp[i-1][2]*c)%mod)%mod;
dp[i][2]=(((dp[i-1][0]*c)%mod+(dp[i-1][1]*b)%mod)%mod+(dp[i-1][2]*a)%mod)%mod;
}
cout<<dp[N][0];
return 0;
}