#include <bits/stdc++.h>
using namespace std;
int n;
struct info {
  int x, y;
  bool operator<(const info& i) const {
    if (x != i.x) return x < i.x;
    return y < i.y;
  }
} A[2505];
double dist(int i, int j) {
  long long dx = A[i].x - A[j].x;
  long long dy = A[i].y - A[j].y;
  return sqrt(dx * dx + dy * dy);
}
double dp[2502][2502][2];
double dfs(int L, int R, int op) {
  double& ret = dp[L][R][op];
  if (ret >= 0) return ret;
  if (L == R) {
    return ret = 0;
  }
  ret = 0;
  if (op == 0) {
    ret = max(ret, dist(L, (L + 1) % n) + dfs((L + 1) % n, R, 0));
    ret = max(ret, dist(L, R) + dfs((L + 1) % n, R, 1));
  } else {
    ret = max(ret, dist((R - 1 + n) % n, R) + dfs(L, (R - 1 + n) % n, 1));
    ret = max(ret, dist(L, R) + dfs(L, (R - 1 + n) % n, 0));
  }
  return ret;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d %d", &A[i].x, &A[i].y);
  }
  for (int i = 0; i <= n; i++)
    for (int j = 0; j <= n; j++)
      for (int k = 0; k < 2; k++) dp[i][j][k] = -1;
  double ans = -1;
  for (int i = 0; i < n; i++) {
    ans = max(ans, dfs(i, (i + n - 1) % n, 0));
  }
  cout.precision(40);
  cout << ans << endl;
}
