#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
template <class T>
bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool chmin(T &a, const T &b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
vector<ll> dy = {0, 0, -1, 1, 0};
vector<ll> dx = {-1, 1, 0, 0, 0};
vector<ll> INV(ll n) {
  vector<ll> v(n);
  for (int i = 0; i < n; i++) cin >> v[i];
  return v;
}
vector<vector<ll>> INV2(ll n, ll map<ll, ll>) {
  vector<vector<ll>> v(n, vector<ll>(map<ll, ll>));
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < map<ll, ll>; j++) {
      cin >> v[i][j];
    }
  }
  return v;
}
bool isOK(vector<ll> &v, int index, int key) {
  if (v[index] >= key)
    return true;
  else
    return false;
}
ll bs(vector<ll> &v, ll key) {
  int ng = -1;
  int ok = ((int)(v).size());
  while (abs(ok - ng) > 1) {
    int mid = (ok + ng) / 2;
    if (isOK(v, mid, key))
      ok = mid;
    else
      ng = mid;
  }
  return ok;
}
ll gcd(ll a, ll b) {
  if (a < b) swap(a, b);
  ll r = a % b;
  while (r != 0) {
    a = b;
    b = r;
    r = a % b;
  }
  return b;
}
bool is_prime(ll n) {
  bool flg = true;
  if (n <= 1)
    flg = false;
  else if (n == 2)
    flg = true;
  else if (n % 2 == 0)
    flg = false;
  else {
    for (int i = 3; i * i <= n; i += 2) {
      if (n % i == 0) flg = false;
    }
  }
  return flg;
}
vector<ll> prime_factorization(ll n) {
  vector<ll> cnt_pf(sqrt(n), 0);
  for (int i = 1; i < ((int)(cnt_pf).size()); i++) {
    while (n % (i + 1) == 0) {
      cnt_pf[i]++;
      n /= (i + 1);
    }
    if (n == 1) break;
  }
  if (n != 1) {
    cnt_pf[0] = n;
  }
  return cnt_pf;
}
vector<vector<ll>> map_vec(vector<string> &str) {
  vector<vector<ll>> v(
      ((int)(str).size()),
      vector<ll>(((int)(str[distance(str.begin(),
                                     max_element(str.begin(), str.end()))])
                      .size()),
                 (int)(1e9)));
  for (int i = 0; i < ((int)(str).size()); i++) {
    for (int j = 0; j < ((int)(str[i]).size()); j++) {
      if (str[i][j] == '#') v[i][j] = -1;
    }
  }
  return v;
}
ll cnt_wall(vector<string> str) {
  ll cnt = 0;
  for (int i = 0; i < ((int)(str).size()); i++) {
    for (int j = 0; j < ((int)(str[i]).size()); j++) {
      if (str[i][j] == '#') cnt++;
    }
  }
  return cnt;
}
ll bfs_maze(vector<string> &str, ll s_y, ll s_x, ll g_y, ll g_x) {
  struct Corr {
    ll y;
    ll x;
    ll depth;
  };
  queue<Corr> que;
  vector<vector<ll>> v(
      ((int)(str).size()),
      vector<ll>((
          (int)(str[distance(str.begin(), max_element(str.begin(), str.end()))])
              .size())));
  v = map_vec(str);
  que.push({s_y, s_x, 1});
  while (!que.empty()) {
    Corr now = que.front();
    que.pop();
    if (now.y == g_y && now.x == g_x) break;
    for (int i = 0; i < 4; i++) {
      Corr next = {now.y + dy[i], now.x + dx[i], now.depth + 1};
      if (0 <= (int)next.y && (int)next.y < ((int)(v).size()) &&
          0 <= (int)next.x &&
          (int)next.x <
              ((int)(v[distance(v.begin(), max_element(v.begin(), v.end()))])
                   .size()) &&
          v[(int)next.y][(int)next.x] == (1e9)) {
        v[(int)next.y][(int)next.x] = next.depth;
        que.push(next);
      }
    }
  }
  return v[(int)g_y][(int)g_x];
}
vector<ll> cumulative_sum(vector<ll> a) {
  vector<ll> v(((int)(a).size()) + 1);
  v[0] = 0;
  for (int i = 0; i < ((int)(a).size()); i++) {
    v[i + 1] = v[i] + a[i];
  }
  return v;
}
vector<pair<char, ll>> decompose_str(string set<ll>) {
  vector<pair<char, ll>> moji_cnt;
  moji_cnt.push_back(make_pair(set<ll>[0], 0));
  for (int i = 0; i < set<ll>.length(); i++) {
    if (moji_cnt.back().first == set<ll>[i]) {
      moji_cnt.back().second++;
    } else {
      moji_cnt.push_back(make_pair(set<ll>[i], 1));
    }
  }
  return moji_cnt;
}
void ans_vec(vector<ll> ans) {
  for (int i = 0; i < ((int)(ans).size()); i++) {
    cout << ans[i] << " ";
  }
}
void dinamic_programming(void) {}
signed main() {
  ll n;
  cin >> n;
  double ans = n * n * 3.14159265;
  cout << ans << "\n";
  ;
  return 0;
}
