#include <bits/stdc++.h>
using namespace std;
using Graph = vector<vector<int>>;
void dfs(const Graph& G, int v, vector<bool>& seen) {
  seen[v] = true;
  for (auto next_v : G[v]) {
    if (seen[next_v]) continue;
    dfs(G, next_v, seen);
  }
}
void bfs(const Graph& G, queue<int>& que, vector<int>& dist) {
  while (!que.empty()) {
    int v = que.front();
    que.pop();
    for (int nv : G[v]) {
      if (dist[nv] != -1) continue;
      dist[nv] = dist[v] + 1;
      que.push(nv);
    }
  }
}
template <typename T>
T gcd(T a, T b) {
  if (a % b == 0) {
    return (b);
  } else {
    return (gcd(b, a % b));
  }
}
template <typename T>
T lcm(T a, T b) {
  return a * b / gcd(a, b);
}
template <typename T>
bool same(T x_b, T x_e, T y_b, T y_e) {
  for (auto i = x_b, j = y_b; i != x_e && j != y_e; ++i, ++j) {
    if (*i != *j) {
      return false;
    }
  }
  return true;
}
int main(void) {
  double n;
  cout << 2 * n * acos(-1);
}
