// #define _GLIBCXX_DEBUG

#include <algorithm>
#include <bitset>
#include <cassert>
#include <cfloat>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstring>
#include <ctime>
#include <deque>
#include <fstream>
#include <functional>
#include <iomanip>
#include <iostream>
#include <limits>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#define REP(i, n) for (int i = 0; (i) < (int)(n); ++(i))
#define REP3(i, m, n) for (int i = (m); (i) < (int)(n); ++(i))
#define REP_R(i, n) for (int i = (int)(n)-1; (i) >= 0; --(i))
#define REP3R(i, m, n) for (int i = (int)(n)-1; (i) >= (int)(m); --(i))
#define ALL(x) std::begin(x), std::end(x)

using namespace std;
void dump_func()
{
    cerr << endl;
}
template <class Head, class... Tail>
void dump_func(Head &&h, Tail &&... t)
{
    cerr << h << (sizeof...(Tail) == 0 ? "" : ", "), dump_func(forward<Tail>(t)...);
}
#define dump(...)                                                                                                     \
    cerr << "/* " << #__VA_ARGS__ << " :[" << __LINE__ << ":" << __FUNCTION__ << "]" << endl, dump_func(__VA_ARGS__), \
        cerr << "*/\n\n";
typedef long long ll;

const int INF = 100000000;

double solve(double n)
{
    double res = 0;
    REP3R(i, 1, n + 1)
    {
        res += n / i;
    }
    return res - 1.0;
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    double n;
    cin >> n;
    double res = solve(n);
    printf("%.9f\n", res);
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
const int N=2e5+5;
const int M = 1000000007;
#define AKTG ios_base::sync_with_stdio(false); cin.tie(NULL);
#define int long long
#define     ff           first
#define     all(x)      x.begin(),x.end()
#define     ss          second
#define     pb          push_back
#define     lb          lower_bound
#define     ub          upper_bound
#define     pii         pair<long long,long long>
#define     fix         fixed<<setprecision(19)
#define all(x) x.begin(),x.end()
#define vi vector<int>
#define endl "\n"
vector<int> adj[N];
bool visited[N]={false};
void solve()
{
    double n;
    cin>>n;
    double ans=0;
    for(int i=1;i<n;i++)
    {
        double p=(n/(n-i));
        ans+=p;
    }
    cout<<fix<<ans<<endl;

}
signed main()
{
   int t=1;
  // cin>>t;
   while(t--)
   {
        solve();
   }
 // getch();
   return 0;
}