#include <bits/stdc++.h>
using namespace std;
struct Node {
  double x, y;
};
double dp[2810][2810][2];
Node node[2810];
int N;
double calc_dis(int i, int j) {
  return sqrt((node[i].x - node[j].x) * (node[i].x - node[j].x) +
              (node[i].y - node[j].y) * (node[i].y - node[j].y));
}
int main() {
  while (scanf("%d", &N) != EOF) {
    for (int i = 0; i < N; i++) {
      scanf("%lf%lf", &node[i].x, &node[i].y);
    }
    for (int i = 0; i < N; i++) {
      dp[i][0][0] = dp[i][0][1] = 0;
    }
    for (int j = 1; j < N; j++) {
      for (int i = 0; i < N; i++) {
        dp[i][j][0] = max(dp[(i + 1) % N][j - 1][1] + calc_dis(i, (i + j) % N),
                          dp[(i + 1) % N][j - 1][0] + calc_dis(i, (i + 1) % N));
        dp[i][j][1] =
            max(dp[i][j - 1][1] + calc_dis((i + j - 1) % N, (i + j) % N),
                dp[i][j - 1][0] + calc_dis(i, (i + j) % N));
      }
    }
    double ans = -100000000000;
    for (int i = 0; i < N; i++) {
      ans = max(ans, dp[i][N - 1][0]);
      ans = max(ans, dp[i][N - 1][1]);
    }
    printf("%.11lf", ans);
  }
  return 0;
}
