import sys def sieve_min_prime(max_n): min_prime = [0] * (max_n + 1) for i in range(2, max_n + 1): if min_prime[i] == 0: min_prime[i] = i j = i * i while j <= max_n: if min_prime[j] == 0: min_prime[j] = i j += i return min_prime def compute_f(R, min_prime): product = 1 n = R while n > 1: p = min_prime[n] if p == 0: p = n count = 0 while n % p == 0: count += 1 n = n // p if p % 4 == 3: if count % 2 != 0: return 0 else: if p != 2: product *= (count + 1) return product * 4 def main(): X, Y = map(int, sys.stdin.readline().split()) if X == 0: X = 1 max_n = Y min_prime = sieve_min_prime(max_n) max_f = 0 for R in range(X, Y + 1): current_f = compute_f(R, min_prime) if current_f > max_f: max_f = current_f print(max_f) if __name__ == '__main__': main()