#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp> 
#include <ext/pb_ds/tree_policy.hpp>
#define ll long long int
#define pb push_back
#define fi first
#define se second
#define all(x) x.begin(),x.end()
#define mem(x,y) memset(x,y,sizeof(x))//memset only use to initialize 0 or -1 no other number.
#define pii pair<int,int>
#define pll pair<ll,ll>
#define mod 1000000007
//#define mod 998244353
using namespace std;
using namespace __gnu_pbds; 
typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> os;
typedef tree<pii,null_type,less<pii>,rb_tree_tag,tree_order_statistics_node_update> os_pair;

ll pow(ll x,ll n){ll res =1;while(n>0){if(n%2==1){res=res*x;}x=x*x;n=n/2;}return res;}
ll powm(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
ll modinv(ll a){
	return powm(a,mod-2)%mod;
}
vector<int>g[100005];
int vis[100005];
int lev[100005];
void dfs(int s)
{
	vis[s]=1;
	for(int i=0;i<g[s].size();i++)
	{
		if(!vis[g[s][i]])
		{
			dfs(g[s][i]);
		}
	}
}
void bfs(int s)
{
	queue<int>q;
	q.push(s);
	vis[s]=1;
	lev[s]=0;
	while(!q.empty())
	{
		int x=q.front();
		q.pop();
		for(int i=0;i<g[x].size();i++)
		{
			if(!vis[g[x][i]])
			{
				vis[g[x][i]]=1;
				q.push(g[x][i]);
				lev[g[x][i]]=lev[x]+1;
			}
		}
	}
}


int main(){

ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t;
    t=1;
    //cin>>t;
    while(t--){
    	int r;
    	cin>>r;
    	float x=(44.0/7.0)*(r*1.0);
    	cout<<fixed << setprecision(10)<<x;
    }}
    	