#include <bits/stdc++.h>
using namespace std;
long long n, l, r;
map<long long, long long> len;
void dfs1(long long n) {
  if (n <= 1)
    len[n] = 1;
  else {
    dfs1(n / 2);
    len[n] = len[n / 2] * 2 + 1;
  }
}
long long dfs2(long long n, long long s, long long e, long long l,
               long long r) {
  if (s == l && e == r) return n;
  long long half = len[n / 2];
  long long mi = s + half;
  if (r < mi)
    return dfs2(n / 2, s, mi - 1, l, r);
  else if (l > mi)
    return dfs2(n / 2, mi + 1, e, l, r);
  else {
    long long res = n % 2;
    if (l < mi) res += dfs2(n / 2, s, mi - 1, l, mi - 1);
    if (r > mi) res += dfs2(n / 2, mi + 1, e, mi + 1, r);
    return res;
  }
  return 0LL;
}
int main() {
  scanf("%I64d%I64d%I64d", &n, &l, &r);
  dfs1(n);
  printf("%I64d\n", dfs2(n, 1, len[n], l, r));
  return 0;
}
