#include <bits/stdc++.h>
using namespace std;
long long read() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
void write(long long x) {
  char a[20], s = 0;
  if (x == 0) {
    putchar('0');
    return;
  }
  if (x < 0) {
    putchar('-');
    x = -x;
  }
  while (x) {
    a[s++] = x % 10 + '0';
    x = x / 10;
  }
  while (s--) putchar(a[s]);
}
void writeln(long long x) {
  write(x);
  putchar('\n');
}
long long n, l, r, p, q, i, ans, a[10005], lp, rp, lq, rq;
long long gcd(long long x, long long y) { return y ? gcd(y, x % y) : x; }
int main() {
  n = read();
  l = read();
  r = read();
  if (n == 1) {
    writeln(r - l + 1);
    return 0;
  }
  if (n == 2) {
    writeln((r - l + 1) * (r - l));
    return 0;
  }
  a[1] = 1;
  for ((q) = (2); (q) <= (r); ++q) {
    a[q] = 1;
    for ((i) = (1); (i) <= (n - 1); ++i) {
      a[q] = a[q] * q;
      if (a[q] > r) break;
    }
    if (a[q] > r) break;
    lq = l / a[q] + (l % a[q] > 0);
    rq = r / a[q];
    if (lq > rq) continue;
    for ((p) = (1); (p) <= (q - 1); ++p)
      if (gcd(p, q) == 1) {
        lp = l / a[p] + (l % a[p] > 0);
        rp = r / a[p];
        if (lp > rp || lp > rq) continue;
        lp = max(lp, lq);
        rp = min(rp, rq);
        ans += (rp - lp + 1);
      }
  }
  writeln(ans * 2);
  return 0;
}
