#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast")
int dx[] = {0, 0, 1, -1, -1, 1, -1, 1};
int dy[] = {-1, 1, 0, 0, 1, 1, -1, -1};
int dz[] = {0, 0, 1, -1, -1, 1, -1, 1};
int kx[] = {2, 2, -2, -2, 1, -1, 1, -1};
int ky[] = {1, -1, 1, -1, 2, 2, -2, -2};
template <typename T>
void print(const T& x) {
  cerr << x << ' ';
}
template <typename T1, typename... T2>
void print(const T1& first, const T2&... rest) {
  print(first);
  print(rest...);
}
int toInt(string s) {
  int sm;
  stringstream ss(s);
  ss >> sm;
  return sm;
}
long long toLlint(string s) {
  long long int sm;
  stringstream ss(s);
  ss >> sm;
  return sm;
}
bool inBound(int x, int y, int r, int c) {
  return (x >= 0 && x < r && y >= 0 && y < c);
}
long long mulMod(long long a, long long b, long long M) {
  return ((((a % M) * (b % M)) % M) + M) % M;
}
long long bigMod(long long n, long long p, long long M) {
  if (!p) return 1 % M;
  if (p & 1)
    return (bigMod(n, p - 1, M) % M * (n % M)) % M;
  else {
    long long r = bigMod(n, p / 2, M) % M;
    return (((r * r) % M) + M) % M;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL), cout.tie(NULL);
  cout << setprecision(20) << fixed;
  double r;
  cin >> r;
  cout << 2.0 * acos(-1.0) * r << endl;
  return 0;
}
