Problem:
Score : 100 points

Problem Statement

We have two integers: A and B.

Print the largest number among A + B, A - B, and A \times B.

Constraints

All values in input are integers.

-100 \leq A,\ B \leq 100

Input

Input is given from Standard Input in the following format:

A B

Output

Print the largest number among A + B, A - B, and A \times B.

Sample Input 1

-13 3

Sample Output 1

-10

The largest number among A + B = -10, A - B = -16, and A \times B = -39 is -10.

Sample Input 2

1 -33

Sample Output 2

34

The largest number among A + B = -32, A - B = 34, and A \times B = -33 is 34.

Sample Input 3

13 3

Sample Output 3

39

The largest number among A + B = 16, A - B = 10, and A \times B = 39 is 39.

Solution in Rust (1.15.1) (judge verdict: Accepted)

    use std::io::*;
    use std::str::*;
     
    fn read<T: FromStr>(s: &mut StdinLock) -> Option<T> {
        let s = s.by_ref().bytes().map(|c| c.unwrap() as char)
            .skip_while(|c| c.is_whitespace())
            .take_while(|c| !c.is_whitespace())
            .collect::<String>();
        s.parse::<T>().ok()
    }
     
    fn main(){
        let stdin = stdin();
        let mut stdin = stdin.lock();
        let stdin = &mut stdin;
        let a: i32 = read(stdin).unwrap();
        let b: i32 = read(stdin).unwrap();
        let plus = a + b;
        let minus = a - b;
        let multiple = a * b;
        if plus >= minus && plus >= multiple {
            println!("{}",plus)
        } else if minus >= plus && minus >= multiple {
            println!("{}",minus)
        } else{
            println!("{}",multiple)
        }
    }