#include <bits/stdc++.h>
using namespace std;
const int M = 100001;
const double pi = acos(-1);
int n, m, x, y, l, r;
double ans, dp[M], seg[4 * M], val, vol;
vector<pair<double, int> > v;
void update(int i, int s, int e) {
  if (s > r || e < l) return;
  if (s == e) {
    seg[i] = val;
    return;
  }
  int mid = s + e >> 1;
  update(i * 2, s, mid);
  update(i * 2 + 1, mid + 1, e);
  seg[i] = max(seg[i * 2], seg[i * 2 + 1]);
}
double get(int i, int s, int e) {
  if (s > r || e < l) return 0;
  if (s >= l && e <= r) return seg[i];
  int mid = s + e >> 1;
  return max(get(i * 2, s, mid), get(i * 2 + 1, mid + 1, e));
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cin >> n;
  for (int i = 1; i <= n; i++) {
    double x, y;
    cin >> x >> y;
    vol = x * x * y;
    v.push_back(make_pair(vol, -i));
  }
  sort(v.begin(), v.end());
  for (int i = 0; i < n; i++) {
    l = 1;
    r = -v[i].second;
    dp[i] = v[i].first + get(1, 1, n);
    l = -v[i].second;
    ans = max(ans, dp[i]);
    val = dp[i];
    update(1, 1, n);
  }
  ans *= pi;
  cout.precision(6);
  cout << fixed << ans;
  return 0;
}
