#include <fstream> #include <iostream> #include <vector> #include <bitset> #include <string.h> #include <algorithm> #include <iomanip> #include <math.h> #include <time.h> #include <stdlib.h> #include <set> #include <map> #include <string> #include <queue> #include <deque> #include <stdio.h> using namespace std; const char infile[] = "spell.in"; const char outfile[] = "spell.out"; ifstream fin(infile); ofstream fout(outfile); const int MAXN = 100005; const int oo = 0x3f3f3f3f; typedef vector<int> Graph[MAXN]; typedef vector<int> :: iterator It; const inline int min(const int &a, const int &b) { if( a > b ) return b; return a; } const inline int max(const int &a, const int &b) { if( a < b ) return b; return a; } const inline void Get_min(int &a, const int b) { if( a > b ) a = b; } const inline void Get_max(int &a, const int b) { if( a < b ) a = b; } int v[5]; int main() { scanf("%d %d %d %d", &v[1], &v[2], &v[3], &v[4]); sort(v + 1, v + 4 + 1); printf("%d\n", v[1] * v[2] + v[3] * v[4]); fin.close(); fout.close(); return 0; }