#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
template<typename T>
T max2(const vector<T>& arr) {
auto copy(arr);
auto it = max_element(copy.begin(), copy.end());
swap(*it, *(copy.begin()));
it = max_element(copy.begin() + 1, copy.end());
return copy[0] + *it;
}
int main(int argc, char* argv[]) {
cout << max2<double>({1.0, 2.0, 3, 4, 5}) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+ClQgbWF4Mihjb25zdCB2ZWN0b3I8VD4mIGFycikgewogIGF1dG8gY29weShhcnIpOwogIGF1dG8gaXQgPSBtYXhfZWxlbWVudChjb3B5LmJlZ2luKCksIGNvcHkuZW5kKCkpOwoKICBzd2FwKCppdCwgKihjb3B5LmJlZ2luKCkpKTsKICBpdCA9IG1heF9lbGVtZW50KGNvcHkuYmVnaW4oKSArIDEsIGNvcHkuZW5kKCkpOwoKICByZXR1cm4gY29weVswXSArICppdDsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkgewogIGNvdXQgPDwgbWF4Mjxkb3VibGU+KHsxLjAsIDIuMCwgMywgNCwgNX0pIDw8IGVuZGw7CiAgcmV0dXJuIDA7Cn0K