#include <bits/stdc++.h>
using namespace std;
const int nax = 2600;
int n;
int x[nax], y[nax];
long double dp[nax][nax][2];
long double dis(int a, int b) {
  return sqrtl((long long)(x[a] - x[b]) * (x[a] - x[b]) +
               (long long)(y[a] - y[b]) * (y[a] - y[b]));
}
int nas(int x) { return (x + 1) % n; }
int pop(int x) { return (x - 1 + n) % n; }
int main() {
  scanf("%d", &n);
  for (int i = 0; i <= n - 1; ++i) scanf("%d%d", x + i, y + i);
  for (int len = 1; len <= n - 1; ++len)
    for (int i = 0; i <= n - 1; ++i) {
      int j = (i + len - 1) % n;
      dp[pop(i)][j][0] = max(dp[pop(i)][j][0], dp[i][j][0] + dis(i, pop(i)));
      dp[pop(i)][j][0] = max(dp[pop(i)][j][0], dp[i][j][1] + dis(j, pop(i)));
      dp[i][nas(j)][1] = max(dp[i][nas(j)][1], dp[i][j][0] + dis(i, nas(j)));
      dp[i][nas(j)][1] = max(dp[i][nas(j)][1], dp[i][j][1] + dis(j, nas(j)));
    }
  long double best = 0.0;
  for (int i = 0; i <= n - 1; ++i)
    for (int k = 0; k <= 1; ++k) best = max(best, dp[i][(i + n - 1) % n][k]);
  printf("%.10Lf\n", best);
  return 0;
}
