#include <bits/stdc++.h>
using namespace std;
template <typename T>
istream& operator>>(istream& istr, vector<T>& v) {
  for (T& x : v) istr >> x;
  return istr;
}
template <typename T, typename U>
istream& operator>>(istream& istr, pair<T, U>& p) {
  istr >> p.first >> p.second;
  return istr;
}
template <typename T>
ostream& operator<<(ostream& ostr, vector<T>& v) {
  if (!v.empty()) {
    ostr << v.front();
    for (auto itr = ++v.begin(); itr != v.end(); itr++) ostr << " " << *itr;
  }
  return ostr;
}
template <typename T, typename U>
ostream& operator<<(ostream& ostr, pair<T, U>& p) {
  ostr << "(" << p.first << ", " << p.second << ")";
  return ostr;
}
template <typename T>
ostream& operator<<(ostream& ostr, vector<vector<T>>& vv) {
  if (!vv.empty()) {
    ostr << vv.front();
    for (auto itr = ++vv.begin(); itr != vv.end(); itr++) ostr << endl << *itr;
  }
  return ostr;
}
template <typename T, typename U>
ostream& operator<<(ostream& ostr, vector<pair<T, U>>& vp) {
  if (!vp.empty()) {
    ostr << vp.front();
    for (auto itr = ++vp.begin(); itr != vp.end(); itr++) ostr << endl << *itr;
  }
  return ostr;
}
template <typename T>
T sum(vector<T>& v) {
  return accumulate((v).begin(), (v).end(), (T)0);
}
template <typename T>
inline void sort(vector<T>& v) {
  sort((v).begin(), (v).end());
}
template <typename T>
inline void rsort(vector<T>& v) {
  sort((v).begin(), (v).end(), greater<T>());
}
template <typename T>
inline void chmin(T& a, T b) {
  if (a > b) a = b;
}
template <typename T>
inline void chmax(T& a, T b) {
  if (a < b) a = b;
}
int main() {
  cout << fixed << setprecision(10);
  long long r;
  cin >> r;
  cout << 2 * r * 3.1415926535897932 << endl;
  return 0;
}
