#include <bits/stdc++.h>
using namespace std;
const int _ = 262, p = 1e9 + 7;
int add(int a, int b) { return (a + b < p) ? (a + b) : (a + b - p); }
int Pow_(int a, int b) {
  int ans = 1;
  while (b) {
    if (b & 1) ans = 1ll * ans * a % p;
    a = 1ll * a * a % p;
    b >>= 1;
  }
  return ans;
}
struct sq5 {
  int a, b;
  sq5() {}
  sq5(int a_, int b_) {
    a = a_;
    b = b_;
  }
  friend sq5 operator*(sq5 x, sq5 y) {
    return sq5((1ll * x.a * y.a % p + 1ll * x.b * y.b % p * 5) % p,
               (1ll * x.a * y.b + 1ll * x.b * y.a) % p);
  }
  friend sq5 operator+(sq5 x, sq5 y) {
    return sq5(add(x.a, y.a), add(x.b, y.b));
  }
};
sq5 inv_(sq5 a) {
  int inv =
      Pow_(add(1ll * a.a * a.a % p, p - 1ll * a.b * a.b % p * 5 % p), p - 2);
  return sq5(1ll * a.a * inv % p, a.b ? (p - 1ll * a.b * inv % p) : 0);
}
sq5 neg_(sq5 a) { return sq5(a.a ? (p - a.a) : 0, a.b ? (p - a.b) : 0); }
sq5 Pow(sq5 a, long long b) {
  sq5 ans = sq5(1, 0);
  while (b) {
    if (b & 1) ans = ans * a;
    a = a * a;
    b >>= 1;
  }
  return ans;
}
int fac[_], ifc[_];
sq5 phi = sq5(Pow_(2, p - 2), Pow_(2, p - 2)),
    phi_ = sq5(Pow_(2, p - 2), Pow_(p - 2, p - 2));
int C(int a, int b) { return 1ll * ifc[b] * ifc[a - b] % p * fac[a] % p; }
int fun(long long l, int k) {
  sq5 ans = sq5(0, 0);
  for (int i = 0; i <= k; i++) {
    sq5 dt = Pow(phi, i) * Pow(phi_, k - i);
    if (dt.a == 1 && dt.b == 0)
      dt = sq5(l % p, 0);
    else
      dt = (Pow(dt, l) + sq5(p - 1, 0)) * inv_(dt + sq5(p - 1, 0));
    ans = ans + dt * sq5(((k - i) & 1) ? (p - C(k, i)) : C(k, i), 0);
  }
  return (ans * Pow(inv_(sq5(0, 1)), k)).a;
}
int f[_];
int main() {
  fac[0] = 1;
  for (int i = 1; i < _; i++) fac[i] = 1ll * fac[i - 1] * i % p;
  for (int i = 0; i < _; i++) ifc[i] = Pow_(fac[i], p - 2);
  long long k, l, r;
  cin >> k >> l >> r;
  f[1] = 1;
  for (int i = 1; i < k; i++) {
    for (int j = _ - 1; j > 0; j--)
      f[j] = (f[j - 1] + 1ll * (p - i) * f[j]) % p;
  }
  int ans = 0;
  for (int i = 1; i < _; i++) {
    ans = add(ans, 1ll * f[i] * (fun(r + 3, i)) % p);
    ans = add(ans, 1ll * f[i] * (p - fun(l + 2, i)) % p);
  }
  cout << 1ll * ifc[k] * ans % p;
  return 0;
}
