#include <bits/stdc++.h>
using namespace std;
char BUF[3500000];
inline void I(int& a) { scanf("%d", &a); }
inline void I(int& a, int& b) { scanf("%d%d", &a, &b); }
inline void I(int& a, int& b, int& c) { scanf("%d%d%d", &a, &b, &c); }
inline void I(int& a, int& b, int& c, int& d) {
  scanf("%d%d%d%d", &a, &b, &c, &d);
}
inline void L(long long& a) { scanf("%lld", &a); }
inline void L(long long& a, long long& b) { scanf("%lld%lld", &a, &b); }
inline void L(long long& a, long long& b, long long& c) {
  scanf("%lld%lld%lld", &a, &b, &c);
}
inline void L(long long& a, long long& b, long long& c, long long& d) {
  scanf("%lld%lld%lld%lld", &a, &b, &c, &d);
}
inline void S(string& str) {
  str.clear();
  scanf("%s", BUF);
  int s = strlen(BUF);
  for (int i = 0; i < s; i++) str.push_back(BUF[i]);
}
inline void SV(vector<int>& v) {
  v.clear();
  scanf("%s", BUF);
  int s = strlen(BUF);
  for (int i = 0; i < s; i++)
    if ('a' <= BUF[i] && BUF[i] <= 'z')
      v.push_back(BUF[i] - 'a');
    else
      v.push_back(BUF[i] - 'A');
}
const auto EPS = 1e-10;
const auto INF = 10000000;
const auto MOD = 1000000007;
long long n, l, r;
long long po[3401];
long long ppow(long long x, long long y) {
  long long ret = 1;
  while (y) {
    if (y & 1) ret *= x;
    if (ret > r) {
      ret = MOD;
      return ret;
    }
    x = x * x;
    y /= 2;
  }
  return ret;
}
void init() {
  for (int i = 2; i <= 3400; i++) {
    po[i] = ppow(i, n);
  }
}
inline long long gcd(long long x, long long y) {
  while (y) {
    x %= y;
    swap(x, y);
  }
  return x;
}
int main() {
  L(n, l, r);
  if (n == 1) {
    cout << r - l + 1 << endl;
    return 0;
  }
  if (n == 2) {
    cout << (r - l + 1) * (r - l) << endl;
    return 0;
  }
  n--;
  init();
  long long ans = 0;
  for (long long i = 2; i <= 3400; i++) {
    long long p = po[i];
    if (p == MOD) break;
    ans += max(r / p - l + 1, 0LL);
  }
  for (long long i = 2; i <= 3400; i++) {
    if (po[i] == MOD) break;
    for (long long j = i + 1; j <= 3400; j++) {
      if (gcd(i, j) != 1) continue;
      if (po[j] == MOD) break;
      long long ad = max(r / po[j] - (l + po[i] - 1) / po[i] + 1, 0LL);
      if (ad == 0) break;
      ans += ad;
    }
  }
  cout << ans * 2 << endl;
}
