#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 2;
const long long MOD = 1e9 + 7;
long long dp[N][4];
long long c[4];
long long go(long long n, long long modu) {
  if (n < 0) return 0;
  if (n == 0 && modu == 0)
    return 1;
  else if (n == 0 && modu != 0)
    return 0;
  if (dp[n][modu] != -1)
    return dp[n][modu];
  else {
    return dp[n][modu] =
               (((go(n - 1, modu) % MOD * c[3] % MOD) % MOD +
                 (go(n - 1, ((modu - 1) + 3) % 3) % MOD * c[1] % MOD) % MOD) %
                    MOD +
                (go(n - 1, ((modu - 2) + 3) % 3) % MOD * c[2] % MOD) % MOD) %
               MOD;
  }
}
long long getval(long long l, long long r, long long modu) {
  long long a = l, b = r;
  while (a <= r && a % 3 != modu) a++;
  while (b >= l && b % 3 != modu) b--;
  if (a > b) return 0;
  long long res = 0;
  a -= modu;
  b -= modu;
  a /= 3;
  b /= 3;
  return b - a + 1;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  ;
  long long n, l, r;
  cin >> n >> l >> r;
  long long mod1 = getval(l, r, 1), mod2 = getval(l, r, 2),
            mod3 = getval(l, r, 0);
  c[1] = mod1;
  c[2] = mod2;
  c[3] = mod3;
  memset(dp, -1, sizeof(dp));
  cout << go(n, 0) << endl;
  return 0;
}
