// // #include<iostream>
// // #include<algorithm>
// // using namespace std;
// // int a[1005],b[1005];
// // int main(){
// // 	int n;
// //   	cin>>n;
// //   	int min3=1e8;
// //   	for(int i=1;i<=n;i++){
// //       	cin>>a[i]>>b[i];
// //       	min3=min(min3,a[i]+b[i]);
// //     }
// //     sort(a+1,a+n+1);
// //     sort(b+1,b+1+n);
// //   	if(a[1]+b[1]==min3){
// //           min3=min({min3,max(b[1],a[2]),max(b[2],a[1]});
// //           cout<<min3;
// //     }
// //     else{
// //         cout<<max(a[1],b[1]);
// //     }
// //     getchar();
// //     getchar();
// //   return 0;
// // }
// #include<iostream>
// #define int long long
// using namespace std;
// int a[300000+5];
// signed main(){
//     int sum=0;
//     int ans=0;
//     int n;
//     cin>>n;
//     for(int i=1;i<=n;i++){
//         cin>>a[i];
//         ans+=(n-1)*a[i]*a[i];
//         sum+=a[i];
//     }
//     for(int i=1;i<=n;i++){
//         ans-=a[i]*(sum-a[i]);
//     }
//     cout<<ans;
//     getchar();
//     getchar();
//     return 0;
// }
#include<iostream>
#include<iomanip>
#include<algorithm>
using namespace std;
double dp[200000+5];
double dfs(int x,int n){
    if(x==n)
        return 0.0;
    if(dp[x]!=0.0)
        return dp[x];
    double ans=0.0;
    ans+=dfs(x+1,n)+1.0*n/(n-x);
    return dp[x]=ans;
}
int main(){
    int n;
    cin>>n;
    dp[n]=0.0;
    cout<<fixed<<setprecision(10)<<dfs(1,n);
    getchar();
    getchar();
    return 0;
}

#include <iostream>
#include <string>
#include <algorithm>
#include <functional>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <cstdio>
#include <cmath>
#include <tuple>
#define int long long
#define rep(i, n) for(i = 0; i < n; i++)
using namespace std;

int L;
int comb[200][12];

signed main() {
	int i, j;
	
	cin >> L;
	comb[0][0] = 1;
	for (i = 0; i < L; i++) {
		comb[i][0] = 1;
		for (j = 1; j <= min(i, 11LL); j++) {
			comb[i][j] = comb[i - 1][j - 1] + comb[i - 1][j];
		}
	}
	
	cout << comb[L - 1][11] << endl;
	return 0;
}