#ifdef ONLINE_JUDGE #include #else #include #include #include #include #include #include #include #include #include #include #include #include #include #endif using namespace std; // lambda : [] (int a, int b) -> bool { body return } // string r_str = R"(raw string)" #define mp make_pair #define mt make_tuple #define eb emplace_back #define pb push_back #define LL long long #define ULL unsigned long long #define BASE 73 #define NMAX 10000 #define NMAX2 20001 #define MOD1 1000000007 #define ALL(V) (V).begin(), (V).end() #define ALLR(V) (V).rbegin(), (V).rend() #define CRLINE Duxar(__LINE__); #define SHOWME(x) cerr << __LINE__ << ": " << #x << " = " << (x) << endl; #define ENTER putchar('\n'); int dx4[] = {-1, 0, 1, 0}; int dy4[] = {0, 1, 0, -1}; int dx6[] = {-1, -1, 0, 1, 1, 1, 0, -1}; int dy6[] = {0, 1, 1, 1, 0, -1, -1, -1}; void Duxar(int _this_line) { #ifndef ONLINE_JUDGE printf("\n . . . . . . . . . . . . . Passed line - %d\n", _this_line); #endif } template void ReadNo(T &_value) { T _sign = 1; char ch; _value = 0; while(!isdigit(ch = getchar())) { (ch == '-') && (_sign = -1); } do { _value = _value * 10 + (ch - '0'); } while(isdigit(ch = getchar())); _value *= _sign; } template void AddNr(T &a, T b) { a = a + b; while (a >= MOD1) { a -= MOD1; } while (a < 0) { a += MOD1; } } int best = 0; vector values(4); int main(){ #ifdef INFOARENA freopen("input.in", "r", stdin); freopen("input.out", "w", stdout); #else #ifndef ONLINE_JUDGE #endif #endif for (auto &x: values) { ReadNo(x); } sort(ALL(values)); while (next_permutation(ALL(values))) { best = max(best, values[0] * values[1] + values[2] * values[3]); } cout << best << '\n'; return 0; }