#include <iostream>
#include <iterator>
#include <cmath>
#include <vector>
#include <tuple>
#include <algorithm>
#include <cstdlib>
#include <fstream>


template <typename T>
auto is_prime (T n) -> auto
{
    const auto sqrt_n = static_cast<T> (sqrt (n)); // Тупо отбрасываем дробную часть.
    for (auto i = 2; i <= sqrt_n; i++)
        if (n % i == 0)
            return false;
    return true;
}

template <typename T>
auto generate_primes (T val) -> std::vector<std::tuple <T, T>>
{
    std::vector <std::tuple <T, T>> result;
    const auto limit = static_cast<T> (val / 2); // Тут тоже.
    for (auto i = 2; i < limit; i++) { // <=
        if (is_prime (i) && is_prime (val-i)) {
            result.emplace_back (std::make_tuple (i, val-i));
        }
    }
    return result;
}

template <typename T>
auto generate_evens (const T start, const T end) -> std::vector<T>
{
    std::vector<T> result;
    for (auto i = start; i <= end; ++i)
        result.emplace_back (i);
    return result;
}

template <typename T>
auto pass (const T start, const T end) -> T
{
    std::vector<T> results;
    for (const auto& i : generate_evens (start, end)) {
        for (const auto& val : generate_primes (i)) {
//            std::cout << i << ": " << std::get<0> (val) << " " << std::get<1> (val) << std::endl; // NOTE: debug only
            results.emplace_back (std::get<0> (val));
        }
//        std::cout << "~~~~~" << std::endl; // NOTE: debug only
    }
    const auto result = std::max_element (results.begin (), results.end ());
    if (result != results.end ())
        return *result;
    return {};
}

auto read_input () -> std::vector<int>
{
    std::ifstream input_file ("input.txt");
    std::string line;
    std::getline (input_file, line);
    input_file.close ();
    //const char* input = "11 14";
    const char* input = line.c_str ();
    char* end;
    std::vector<int> args;
    for (long i = std::strtol (input, &end, 10); input != end; i = std::strtol (input, &end, 10)) {
        args.emplace_back (i);
        input = end;
    }
    return args;
}

auto main () -> int
{
    const auto args = read_input ();
    if (args.size () < 2)
        return 1; // Не хватает данных!

    const auto fst = args[0];
    const auto snd = args[1];

    std::cout << pass<int> (fst, snd);
    return 0;
}
