#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void __f(const char *name, Arg1 &&arg1) {
  cerr << name << " : " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char *names, Arg1 &&arg1, Args &&...args) {
  const char *comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
void i_o() {}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  i_o();
  int n;
  cin >> n;
  map<long long, long long> um;
  um[0] = 0;
  for (int i = 0; i < n; i++) {
    long long r, h;
    cin >> r >> h;
    long long v = r * r * h;
    auto prev = um.lower_bound(v), nxt = prev--;
    long long curdp = v + (*prev).second;
    while (nxt != um.end() && (*nxt).second < curdp) {
      um.erase(nxt++);
    }
    um[v] = curdp;
  }
  cout << setprecision(15) << fixed;
  long long ans = 0;
  for (auto i : um) ans = max(ans, i.second);
  long double ans1 = ans * 3.141592653589793238;
  cout << ans1 << endl;
  return 0;
}
