#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
const string YESNO[2] = {"NO", "YES"};
const string YesNo[2] = {"No", "Yes"};
const string yesno[2] = {"no", "yes"};
void YES(bool t = 1) { cout << YESNO[t] << endl; }
void Yes(bool t = 1) { cout << YesNo[t] << endl; }
void yes(bool t = 1) { cout << yesno[t] << endl; }
inline bool isPowerOfTwo(int x) { return x && (!(x & (x - 1))); }
unsigned long long mpow(int b, int e, int mod = 0) {
  unsigned long long result = 1, base = b, exp = e;
  if (mod) base %= mod;
  while (exp > 0) {
    if (exp & 1) {
      result = ((unsigned long long)result * base);
      if (mod) result %= mod;
    }
    base = ((unsigned long long)base * base);
    if (mod) base %= mod;
    exp >>= 1;
  }
  return result;
}
int64_t bpow(int base, int exp) {
  int64_t ans = 1;
  for (int64_t i = 0; i < exp; i++) ans *= base;
  return ans;
}
bool isPerfectSquare(long double x) {
  long double sr = sqrt(x);
  return ((sr - floor(sr)) == 0);
}
bool isIn(string &s1, string &s2) {
  if (s1.find(s2) != string::npos) return true;
  return false;
}
bool isSorted(vector<int> &arr) {
  for (int i = 0; i < arr.size() - 1; i++)
    if (arr[i] > arr[i + 1]) return false;
  return true;
}
int TEST_CASES = 0;
void submain() {
  int n;
  cin >> n;
  vector<int> arr(n);
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
  }
  sort(arr.begin(), arr.end());
  double ans = 0;
  for (int i = n - 1; i >= 0; i -= 2) {
    double ad = 0;
    if (i - 1 >= 0) {
      ad = 3.1415926535897932384626 * (mpow(arr[i], 2) - mpow(arr[i - 1], 2));
    } else {
      ad = 3.1415926535897932384626 * arr[i] * arr[i];
    }
    ans += ad;
  }
  printf("%.8f\n", ans);
}
int main() {
  { ios_base::sync_with_stdio(false); }
  {
    cin.tie(NULL);
    cout.tie(NULL);
  }
  if (TEST_CASES) {
    int t;
    cin >> t;
    while (t--) {
      submain();
    }
  } else {
    submain();
  }
  return 0;
}
