#include <bits/stdc++.h>
using namespace std;
const long long int mod = 1000000007;
const int MM = 5220000;
long long int m, n, k, p1, p2, p3, p, t, l, r, f, dem[12000], a[MM], lp[MM],
    pr[10000];
int sieve(long long int* pb, long long int* pr);
long long int powmod(long long int a1, long long int b1, long long int modx) {
  long long int res = 1;
  a1 %= modx;
  for (; b1; b1 >>= 1) {
    if (b1 & 1) res = res * a1 % modx;
    a1 = (a1 * a1) % modx;
  }
  return res;
}
long long int nc2(long long int x) { return ((x * (x - 1)) / 2) % mod; }
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> t >> l >> r;
  int u = sieve(dem, pr);
  lp[1] = 1;
  for (int i = 0; i < u; i++) {
    lp[pr[i]] = pr[i];
    for (long long int j = pr[i] * pr[i]; j <= r; j += pr[i]) {
      if (!lp[j]) lp[j] = pr[i];
    }
  }
  for (int i = 0; i <= r; i++) {
    if (lp[i] == 0) lp[i] = i;
    if (lp[i] == i) {
      a[i] = nc2(i);
    }
  }
  for (int i = 2; i <= r; i++) {
    if (a[i] == 0) {
      a[i] = (a[i / lp[i]] + (i / lp[i]) * nc2(lp[i]));
      if (a[i] > mod) a[i] %= mod;
    }
  }
  long long int ans = 0;
  long long int o = 1;
  for (int i = (int)l; i <= r; i++) {
    ans = (ans + (o * a[i]));
    o = (o * t) % mod;
    if (ans > mod) ans %= mod;
  }
  cout << ans % mod;
  return 0;
}
int sieve(long long int* pb, long long int* pr) {
  int MPR = 9002;
  for (int i = 0; i < MPR; i++) pb[i] = 1;
  for (int i = 2; i < (MPR); i++)
    if (pb[i] == 1)
      for (int j = i * i; j <= MPR; j += i) pb[j] = 0;
  int cur = 0;
  for (int i = 2; i < (int)(MPR); i++)
    if (pb[i]) pr[cur++] = i;
  return cur;
}
