#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;

int main()
{	
	//コンテスト

	int a, b;
	cin >> a >> b;
	int x;
	x = max(a + b, a - b);
	x = max(x, a*b);
	cout << x << endl;

	//はじめてのあっとこーだー
	/*
	int a, b, c;
	cin >> a >> b >> c;
	string s;
	cin >> s;

	cout << (a + b + c) << " " << s <<endl;
	*/

	//気象予報士
	/*
	int h, w;
	cin >> h >> w;
	char x[100][100];
	int ans[100][100];
	for (int i = 0; i < h; i++) {
		string a;
		cin >> a;
		for (int j = 0; j < w; j++) {
			x[i][j] = a[j];
			ans[i][j] = -1;
		}
	}
	for (int i = 0; i < w-1; i++) {
		for (int j = 0; j < h; j++) {
			for (int k = 0; k < w; k++) {
				if (x[j][k-i] == 'c'&&ans[j][k]==-1)
					ans[j][k] = i;
			}
		}
	}
	for (int i = 0; i < h; i++) {
		for (int j=0; j < w; j++) {
			cout << ans[i][j];
			if (j == w-1) break;
			cout << " ";
		}
		cout << endl;
	}
	*/


	//サッカー(未完成）
	/*
	int N;
	cin >> N;
	int P[100];
	for (int i = 0; i < 100; i++) {
		P[i] = 0;
	}
	for (int i = 0; i < N*(N - 1) / 2; i++) {
		int a, b,c,d;
		cin >> a >> b >> c >> d;
		if (c > d) 
			P[a] += 3;
		if (c == d) {
			P[a]++;
			P[b]++;
		}
		if (c < d)
			P[b] += 3;
	}
	int Q[100];
	for (int i = 0; i < N; i++) {
		Q[i] = P[i];
	}
	sort(Q, Q + 100);
	reverse(Q, Q + 100);
	int Ans[100];
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			if (P[i] == Q[j]) {
				Ans[i] = j+1;
			}
		}
	}
	for (int i = 0; i < N; i++) {
		cout << Ans[i] << endl;
	}
	*/
	//レシート
	/*
	int N;
	int ans[5];
	int a;
	int i = 0;
	while (true)
	{
		cin >> N;
		if (N == 0) break;
		for (int j = 0; j < 9; j++) {
			cin >> a;
			N -= a;
		}
		ans[i] = N;
		i++;
	}
	for (int k = 0; k < 5; k++)
		cout << ans[k] << endl;
	*/
	//コンテスト	
	/*
	int W[10], K[10];
	for (int i = 0; i < 10; i++) {
		cin >> W[i];
	}
	for (int i = 0; i < 10; i++) {
		cin >> K[i];
	}
	sort(W, W + 10);
	reverse(W, W + 10);
	sort(K, K + 10);
	reverse(K, K + 10);
	cout << W[0] + W[1] + W[2] << " " << K[0] + K[1] + K[2] << endl;
	*/
	//ポイントカード
	/*
	int N, M;
	cin >> N >> M;
	int a;
	int A[5000];
	int b = 0;
	int x = 0;
	for (int i = 0; i <  M; i++) {
		cin >> a;
		if (a < N) {
			A[x]=a;
			x++;
		}
		else
		{
			b++;
		} 
		cin >> a;
	}
	int sum = 0;
	if (b < M - 1) {
		sort(A, A+x);
		reverse(A, A+x);
		for (int i = 0; i < M - 1 - b; i++) {
			sum += N - A[i];
		}
	}
	cout << sum << endl;
	*/

	//合計時間
	/*
	int sum=0, n;
	for (int i = 0; i < 4; i++) {
	cin >> n;
	sum += n;
	}
	cout << sum / 60 << endl;
	cout << sum % 60 << endl;
	//平均点
	/*
	int P[5];
	int sum=0;
	for (int i = 0; i < 5; i++) {
	cin >> P[i];
	if (P[i] < 40) P[i] = 40;
	sum += P[i];
	}
	cout << sum / 5 << endl;
	*/
	//投票
	/*
	int N, M;
	cin >> N >> M;
	int A[1000], vote[1000];
	for (int i = 0; i < N; i++) {
	cin >> A[i];
	vote[i] = 0;
	}
	int b;
	for (int i = 0; i < M; i++) {
	cin >> b;
	for (int j = 0; j < N; j++) {
	if (A[j] <= b) {
	vote[j]++;
	break;
	}
	}
	}
	int temps = 0, ans;
	for (int i = 0; i < N; i++) {
	if (vote[i] > temps) {
	temps = vote[i];
	ans = i;
	}
	}
	cout << ans + 1 << endl;
	*/

	//2.すごろく	
	/*
	int n;
	cin >> n;
	int A, _A = 1;
	int k = 0;
	int A_count[100];
	A_count[0] = 1;
	for (int i = 0; i < n; i++)
	{
	cin >> A;
	if (A == 1)
	{
	if (A == _A)
	{
	A_count[k]++;
	}
	else
	{
	k++;
	A_count[k] = 2;
	}
	}
	_A = A;
	}
	sort(A_count, A_count + k + 1);
	cout << A_count[k] << endl;
	*/

	//タイムカード
	/*
	int t[2][3];
	int x[3][3];
	for (int n=0; n < 3; n++)
	{
	for (int i=0; i < 2; i++)
	for (int k=0; k < 3; k++)
	cin >> t[i][k];

	for (int m = 2; m >= 0; m--)
	{
	x[n][m] = t[1][m] - t[0][m];
	if (t[0][m] > t[1][m])
	{
	x[n][m] += 60;
	t[1][m - 1]--;
	}
	}
	}
	for (int n= 0; n < 3; n++)
	{
	cout << x[n][0] << ' ' << x[n][1] <<' '<< x[n][2] << endl;
	}
	*/



	return 0;
}

Measured memory_bytes: 256