#include <bits/stdc++.h>
const int N = 2505;
int n, x[N], y[N];
double dis[N][N], f[N][N][2];
inline int read() {
  int now = 0, f = 1;
  register char c = getchar();
  for (; !isdigit(c); c == '-' && (f = -1), c = getchar())
    ;
  for (; isdigit(c); now = now * 10 + c - '0', c = getchar())
    ;
  return now * f;
}
int main() {
  n = read();
  for (int i = 1; i <= n; ++i) x[i] = read(), y[i] = read();
  for (int i = 1; i < n; ++i)
    for (int j = i + 1; j <= n; ++j)
      dis[j][i] = dis[i][j] = (sqrt(1.0 * (x[i] - x[j]) * (x[i] - x[j]) +
                                    1.0 * (y[i] - y[j]) * (y[i] - y[j])));
  double ans = 0;
  for (int len = 1; len < n; ++len)
    for (int i = 1, j; i <= n; ++i) {
      j = ((i + len + n - 1) % n + 1);
      f[i][j][0] = std::max(f[((i + 1 + n - 1) % n + 1)][j][0] +
                                dis[i][((i + 1 + n - 1) % n + 1)],
                            f[((i + 1 + n - 1) % n + 1)][j][1] + dis[i][j]);
      f[i][j][1] = std::max(f[i][((j - 1 + n - 1) % n + 1)][0] + dis[i][j],
                            f[i][((j - 1 + n - 1) % n + 1)][1] +
                                dis[j][((j - 1 + n - 1) % n + 1)]);
      ans = std::max(ans, std::max(f[i][j][0], f[i][j][1]));
    }
  printf("%.10lf\n", ans);
  return 0;
}
