#include <bits/stdc++.h>
using namespace std;
template <class T>
using pql = priority_queue<T, vector<T>>;
template <class T>
using pq = priority_queue<T, vector<T>, greater<T>>;
void ansYes(bool flag) {
  if (flag)
    cout << "Yes" << endl;
  else
    cout << "No" << endl;
}
void ansYES(bool flag) {
  if (flag)
    cout << "YES" << endl;
  else
    cout << "NO" << endl;
}
struct node {
  int64_t to;
  int64_t length;
};
vector<int64_t> divisor(int64_t n) {
  vector<int64_t> ret;
  for (int64_t i = 1; i * i <= n; i++) {
    if (n % i == 0) {
      ret.push_back(i);
      if (i * i != n) ret.push_back(n / i);
    }
  }
  return (ret);
}
int dx8[8] = {0, -1, -1, -1, 0, 1, 1, 1};
int dy8[8] = {-1, -1, 0, 1, 1, 1, 0, -1};
int nanko(string s, int64_t n, int64_t i) {
  int64_t length = min(n - i - 1, i);
  int64_t ans = 0;
  for (int k = i - length; k < i; k++) {
    if (s.at(k) == 'R' && s.at(i + (i - k) == 'B')) ans++;
  }
  return ans;
}
int main() {
  long double d;
  cin >> d;
  cout << setprecision(15) << (2 * d * M_PI) << endl;
}
