#include <cstdio>
#include <algorithm>
using namespace std;
long long n;
long long data[ 200000 ] ;
long long next( long long val) {
long long t= upper_bound( data,data+ n,val) - data;
if ( t== n) return data[ t- 1 ] + 1 ;
return data[ t] ;
}
bool check( long long t) {
if ( next( 2 * t+ next( 2 * t+ next( 2 * t+ data[ 0 ] ) ) ) == data[ n- 1 ] + 1 ) {
return true ;
}
return false ;
}
long long lowerbound( long long s,long long e) {
long long lb= s- 1 ,ub= e;
while ( ub- lb> 1 ) {
long long mid= ( ub+ lb) / 2 ;
if ( check( mid) ) {
ub= mid;
} else {
lb= mid;
}
}
return ub;
}
void putval( long long t) {
if ( t== 0 ) printf ( "%I64d" ,t) ;
else printf ( "%.1lf00000" ,t* .5 ) ;
}
int main( ) {
scanf ( "%I64d" ,& n) ;
for ( long long i= 0 ; i< n; i++ ) {
scanf ( "%I64d" ,& data[ i] ) ;
data[ i] * = 2 ;
}
std:: sort ( data,data+ n) ;
long long res= lowerbound( 0 ,1000000000 * 2 ) ;
putval( res) ; putchar ( '\n ' ) ;
long long k= data[ 0 ] ;
for ( long long i= 0 ; i< 3 ; i++ ) {
putval( k+ res) ; k= next( k+ 2 * res) ; putchar ( ' ' ) ;
}
puts ( "" ) ;
return 0 ;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKbG9uZyBsb25nIG47CmxvbmcgbG9uZyBkYXRhWzIwMDAwMF07CmxvbmcgbG9uZyBuZXh0KGxvbmcgbG9uZyB2YWwpewoJbG9uZyBsb25nIHQ9dXBwZXJfYm91bmQoZGF0YSxkYXRhK24sdmFsKS1kYXRhOwoJaWYodD09bilyZXR1cm4gZGF0YVt0LTFdKzE7CglyZXR1cm4gZGF0YVt0XTsKfQpib29sIGNoZWNrKGxvbmcgbG9uZyB0KXsKCWlmKG5leHQoMip0K25leHQoMip0K25leHQoMip0K2RhdGFbMF0pKSk9PWRhdGFbbi0xXSsxKXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCXJldHVybiBmYWxzZTsKfQpsb25nIGxvbmcgbG93ZXJib3VuZChsb25nIGxvbmcgcyxsb25nIGxvbmcgZSl7Cglsb25nIGxvbmcgbGI9cy0xLHViPWU7Cgl3aGlsZSh1Yi1sYj4xKXsKCQlsb25nIGxvbmcgbWlkPSh1YitsYikvMjsKCQlpZihjaGVjayhtaWQpKXsKCQkJdWI9bWlkOwoJCX1lbHNlewoJCQlsYj1taWQ7CgkJfQoJfQoJcmV0dXJuIHViOwp9CnZvaWQgcHV0dmFsKGxvbmcgbG9uZyB0KXsKCWlmKHQ9PTApcHJpbnRmKCIlSTY0ZCIsdCk7CgllbHNlIHByaW50ZigiJS4xbGYwMDAwMCIsdCouNSk7Cn0KaW50IG1haW4oKXsKCXNjYW5mKCIlSTY0ZCIsJm4pOwoJZm9yKGxvbmcgbG9uZyBpPTA7aTxuO2krKyl7CgkJc2NhbmYoIiVJNjRkIiwmZGF0YVtpXSk7CgkJZGF0YVtpXSo9MjsKCX0KCXN0ZDo6c29ydChkYXRhLGRhdGErbik7Cglsb25nIGxvbmcgcmVzPWxvd2VyYm91bmQoMCwxMDAwMDAwMDAwKjIpOwoJcHV0dmFsKHJlcyk7cHV0Y2hhcignXG4nKTsKCWxvbmcgbG9uZyBrPWRhdGFbMF07Cglmb3IobG9uZyBsb25nIGk9MDtpPDM7aSsrKXsKCQlwdXR2YWwoaytyZXMpO2s9bmV4dChrKzIqcmVzKTtwdXRjaGFyKCcgJyk7Cgl9CglwdXRzKCIiKTsKCXJldHVybiAwOwp9Cg==
compilation info
prog.cpp: In function ‘void putval(long long int)’:
prog.cpp:30: warning: format ‘%I64d’ expects type ‘int’, but argument 2 has type ‘long long int’
prog.cpp: In function ‘int main()’:
prog.cpp:34: warning: format ‘%I64d’ expects type ‘int*’, but argument 2 has type ‘long long int*’
prog.cpp:36: warning: format ‘%I64d’ expects type ‘int*’, but argument 2 has type ‘long long int*’
prog.cpp:34: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
prog.cpp:36: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result
stdout
0.500000
1.500000 10001.500000 10003.500000