import sys

input = sys.stdin.readline

sys.setrecursionlimit(100000)



def getN():

    return int(eval(input()))

def getList():

    return list(map(int, input().split()))

import math



a, b = getList()



print((max([a+b, a-b, a*b])))



# print(ans)
import sys

# from collections import defaultdict, deque

# import math

# import copy

# from bisect import bisect_left, bisect_right

# import heapq



# sys.setrecursionlimit(1000000)



# input aliases

input = sys.stdin.readline



getS = lambda: input().strip()

getN = lambda: int(eval(input()))

getList = lambda: list(map(int, input().split()))

getZList = lambda: [int(x) - 1 for x in input().split()]



INF = 10 ** 20

MOD = 1000000007



def solve():

    a,b = getList()

    print((max([a+b, a - b, a * b])))

    return

def main():

    n = getN()

    for _ in range(n):

        solve()

if __name__ == "__main__":

    # main()

    solve()

import sys

input = sys.stdin.readline
sys.setrecursionlimit(100000)


def getN():
    return int(eval(input()))


def getList():
    return list(map(int, input().split()))


import math

a, b = getList()
print((max([a + b, a - b, a * b])))
# print(ans)

import sys

# from collections import defaultdict, deque
# import math
# import copy
# from bisect import bisect_left, bisect_right
# import heapq
# sys.setrecursionlimit(1000000)
# input aliases
input = sys.stdin.readline
getS = lambda: input().strip()
getN = lambda: int(eval(input()))
getList = lambda: list(map(int, input().split()))
getZList = lambda: [int(x) - 1 for x in input().split()]
INF = 10**20
MOD = 1000000007


def solve():
    a, b = getList()
    print((max([a + b, a - b, a * b])))
    return


def main():
    n = getN()
    for _ in range(n):
        solve()


if __name__ == "__main__":
    # main()
    solve()

+# from collections import defaultdict, deque +# import math +# import copy +# from bisect import bisect_left, bisect_right +# import heapq +# sys.setrecursionlimit(1000000) +# input aliases -sys.setrecursionlimit(100000) +getS = lambda: input().strip() +getN = lambda: int(eval(input())) +getList = lambda: list(map(int, input().split())) +getZList = lambda: [int(x) - 1 for x in input().split()] +INF = 10**20 +MOD = 1000000007 -def getN(): -    return int(eval(input())) +def solve(): +    a, b = getList() +    print((max([a + b, a - b, a * b]))) +    return -def getList(): -    return list(map(int, input().split())) +def main(): +    n = getN() +    for _ in range(n): +        solve() -import math - -a, b = getList() -print((max([a + b, a - b, a * b]))) -# print(ans) +if __name__ == "__main__": +    # main() +    solve()