The challenge is to find the maximum number you can get from a list of integer using basic arithmetic operators (addition, substraction, multiplication, unary negation)
Input
A list of integers
Output
The maximum result using every integer in the intput.
The input order doesn't matter, result should be the same.
You do not need to output the full operation, just the result.
Examples
Input : 3 0 1
Output : 4 (3 + 1 + 0)
Input : 3 1 1 2 2
Output : 27 ((2+1)*(2+1)*3))
Input : -1 5 0 6
Output : 36 (6 * (5 - (-1)) +0)
Input : -10 -10 -10
Output : 1000 -((-10) * (-10) * (-10))
Input : 1 1 1 1 1
Output : 6 ((1+1+1)*(1+1))
Rules
Shortest code wins
Standard "loopholes" apply
You may only use + * - operators (addition, multiplication, substraction, unary negation)
The code should work as long as the result can be stored on a 32 bit Integer.
Any overflow behaviour is up to you.
I hope this is clear enough, this is my first Code Golf challenge suggestion.