#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; template istream& operator >> (istream& is, vector& vec){for(T& val: vec) is >> val; return is;} template istream& operator , (istream& is, T& val){ return is >> val;} template ostream& operator << (ostream& os, const vector& vec){for(int i=0; i ostream& operator , (ostream& os, const T& val){ return os << " " << val;} template ostream& operator >> (ostream& os, const T& val){ return os << " " << val;} using Real = long double; int main(){ int n; cin >> n; if(n==1){ cout << 1 << endl; return 0; } if(n==2){ cout << 2 << endl; return 0; } vector f(n+1, 1.0); for(int k=2; k<=n; k++){ f[k] = k * f[k-1]; } Real ans = 2; for(int i=3; i<=n; i++){ for(int l=1; l<=i-1; l++){ for(int r=l+1; r<=i-1; r++){ Real cost = l*r; ans += cost * 2.0 * f[i-2] / f[i] ; } } ans += 1 * 2.0 / i; } printf("%.16f\n", (double)ans); return 0; }