from collections import defaultdict

def sieve(n):
    if n < 2:
        return []
    sieve_list = [True] * (n + 1)
    sieve_list[0], sieve_list[1] = False, False
    for i in range(2, int(n ** 0.5) + 1):
        if sieve_list[i]:
            sieve_list[i*i : n+1 : i] = [False] * len(sieve_list[i*i : n+1 : i])
    primes = [i for i, is_prime in enumerate(sieve_list) if is_prime]
    return primes

def main():
    K = int(input())
    N = int(input())
    
    primes_all = sieve(N)
    primes_in_range = [p for p in primes_all if K <= p <= N]
    
    if not primes_in_range:
        print()  # Should not happen as per problem statement
        return
    
    hash_list = [9 if p % 9 == 0 else p % 9 for p in primes_in_range]
    
    max_length = 0
    start_indices = []
    left = 0
    count = defaultdict(int)
    
    for right in range(len(hash_list)):
        current_hash = hash_list[right]
        
        # Move left pointer to ensure all hashes in window are unique
        while count[current_hash] > 0:
            left_hash = hash_list[left]
            count[left_hash] -= 1
            if count[left_hash] == 0:
                del count[left_hash]
            left += 1
        
        count[current_hash] += 1
        
        current_len = right - left + 1
        if current_len > max_length:
            max_length = current_len
            start_indices = [left]
        elif current_len == max_length:
            start_indices.append(left)
    
    # Determine the maximum prime among the start indices
    max_prime = -1
    for idx in start_indices:
        current_p = primes_in_range[idx]
        if current_p > max_prime:
            max_prime = current_p
    
    print(max_prime)

if __name__ == "__main__":
    main()