#include <bits/stdc++.h>
#define endl "\n"
#define rep(i, a, b) for (int i = (int)(a); i < (int)(b); i++)
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef long double ld;

ld slove(ld n) {
	if (n == (ld)0) return 0;
	ld denta = n*n - 4*n;
	if (denta < (ld)0) return 0;
	if (denta == (ld)0) return n/(ld)2;
	ld arr[4];
	arr[0] = (n - sqrt(denta)) / (ld)2;
	arr[1] = (n + sqrt(denta)) / (ld)2;
	arr[2] = (arr[0] == (ld)0) ? -1 : n/arr[0];
	arr[3] = (arr[1] == (ld)0) ? -1 : n/arr[1];
	sort(arr, arr+4);
	rep(i, 0, 4) if (arr[i] > (ld)0) return arr[i];
	return 0;
}

int main(){
    	#ifdef ONLINE_JUDGE
			SPEED
		#endif
		#ifndef ONLINE_JUDGE
			//freopen("in.cpp", "r", stdin);
			freopen("out.cpp", "wt", stdout);
		#endif
	}
	{/*-----Code-----*/}
	cout << fixed << setprecision(15);
	//vector<ld> ans;
	ld n;
	cin >> n;
	deque<ld> ans;
	ans.push_back(n);
	for (int i = 0; i < ans.size(); i++) {
		ld tmp = slove(ans[i]);
		if (tmp == (ld)0) continue;
		ans.push_back(tmp);
		ans.push_back(ans[i]-tmp);
		ans.erase(ans.begin()+i);
		i--;
	}
	sort(ans.begin(), ans.end());
	for (ld i:ans) cout << i << endl;;
	return 0;
}
