L, R = list(map(int, input().split()))



# n mod 2019 の答えは 0 ~ 2018 のいずれか

# それぞれのmodを取った積のmodでも同じ答えになる





def get_ans():

    # 差が2018以上なら積が0の組み合わせが存在する

    if R - L >= 2018:

        return 0



    # 総当たり

    ans = 2019

    for X in range(L, R):

        for Y in range(X + 1, R + 1):

            ans = min((ans, (X * Y) % 2019))



    return ans





print((get_ans()))
L, R = list(map(int, input().split()))



# n mod 2019 の答えは 0 ~ 2018 のいずれか

# それぞれのmodを取った積のmodでも同じ答えになる





def get_ans():

    # 差が2018以上なら積が0の組み合わせが存在する

    if R - L >= 2018:

        return 0



    # 総当たり

    ans = 2019

    for X in range(L, R):

        for Y in range(X + 1, R + 1):

            ans = min((ans, (X * Y) % 2019))

            if ans == 0:

                return 0



    return ans





print((get_ans()))
L, R = list(map(int, input().split()))
# n mod 2019 の答えは 0 ~ 2018 のいずれか
# それぞれのmodを取った積のmodでも同じ答えになる
def get_ans():
    # 差が2018以上なら積が0の組み合わせが存在する
    if R - L >= 2018:
        return 0
    # 総当たり
    ans = 2019
    for X in range(L, R):
        for Y in range(X + 1, R + 1):
            ans = min((ans, (X * Y) % 2019))
    return ans


print((get_ans()))

L, R = list(map(int, input().split()))
# n mod 2019 の答えは 0 ~ 2018 のいずれか
# それぞれのmodを取った積のmodでも同じ答えになる
def get_ans():
    # 差が2018以上なら積が0の組み合わせが存在する
    if R - L >= 2018:
        return 0
    # 総当たり
    ans = 2019
    for X in range(L, R):
        for Y in range(X + 1, R + 1):
            ans = min((ans, (X * Y) % 2019))
            if ans == 0:
                return 0
    return ans


print((get_ans()))

+            if ans == 0: +                return 0