#include <bits/stdc++.h>
using namespace std;
int N;
vector<pair<int, int> > P;
double dist(pair<int, int> a, pair<int, int> b) {
  double dx = a.first - b.first;
  double dy = a.second - b.second;
  return sqrt(dx * dx + dy * dy);
}
vector<vector<vector<double> > > cc;
double dp(int l, int r, int t) {
  double &ret = cc[l][r][t];
  if (ret != -1) return ret;
  if (l == r) return ret = 0;
  ret = -1e15;
  if (t) {
    ret = max(ret, dp((l + 1) % N, r, 1) + dist(P[l], P[(l + 1) % N]));
    ret = max(ret, dp((l + 1) % N, r, 0) + dist(P[l], P[r]));
  } else {
    ret = max(ret, dp(l, (r + N - 1) % N, 1) + dist(P[r], P[l]));
    ret = max(ret, dp(l, (r + N - 1) % N, 0) + dist(P[r], P[(r + N - 1) % N]));
  }
  return ret;
}
int main() {
  scanf("%d", &N);
  P.resize(N);
  for (int i = 0; i < N; i++) {
    scanf("%d %d", &P[i].first, &P[i].second);
  }
  reverse(P.begin(), P.end());
  cc = vector<vector<vector<double> > >(
      N, vector<vector<double> >(N, vector<double>(2, -1)));
  double ans = -1e15;
  for (int i = 0; i < N; i++) {
    ans = max(ans, dp(i, (i + N - 1) % N, 1));
  }
  cout << fixed;
  cout.precision(20);
  cout << ans;
}
