#include<stdio.h>
#include<map>
#include<string>
using namespace std;
struct xy { long long x, y; }a[212];;
int ccw(xy a, xy b, xy c) {
return a.x*b.y + b.x*c.y + c.x*a.y - a.y*b.x - b.y*c.x - c.y*a.x > 0;
}
int jd(int x) { if (x < 0)return -x; return x; }
int dist(xy a, xy b) { return jd(a.x - b.x) + jd(a.y - b.y); }
bool flag[212];
int S[212];
int max(int a, int b) { if (a < b)return b; return a; }
int min(int a, int b) { if (a < b)return a; return b; }
map<string, int>M;
int main() {
int n, i, j;
scanf("%d", &n);
for (i = 0; i < n; i++)scanf("%lld%lld", &a[i].x, &a[i].y);
for (i = 1; i < n; i++)flag[i] = ccw(a[(i + n - 1) % n], a[i], a[(i + 1) % n]);
for (i = 1; i < n; i++) {
string temp = "";
for (j = i; j != 0; j = (j + 1) % n) {
temp = temp + (flag[j] ? "a" : "b");
M[temp] = M[temp] + 1;
int k = jd(dist(a[j], a[(j + 1) % n]));
while (k > 0)temp += k % 10, k /= 10;
}
}
for (i = 1; i <= n; i++)S[i%n] = S[(i + n - 1) % n] + dist(a[(i + n - 1) % n], a[i%n]);
int ans = 0;
for (i = 1; i < n; i++) {
string temp = "";
int now = 0;
for (j = i; j != 0; j = (j + 1) % n) {
temp = temp + (flag[j] ? "a" : "b");
if (M[temp] == 1) {
now += min(S[0] - S[j], S[j]);
break;
}
int k = jd(dist(a[j], a[(j + 1) % n]));
now += k;
while (k > 0)temp += k % 10, k /= 10;
}
ans = max(ans,now- min(S[i], S[0] - S[i]));
}
printf("%d", ans);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8bWFwPgojaW5jbHVkZTxzdHJpbmc+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cnVjdCB4eSB7IGxvbmcgbG9uZyB4LCB5OyB9YVsyMTJdOzsKaW50IGNjdyh4eSBhLCB4eSBiLCB4eSBjKSB7CglyZXR1cm4gYS54KmIueSArIGIueCpjLnkgKyBjLngqYS55IC0gYS55KmIueCAtIGIueSpjLnggLSBjLnkqYS54ID4gMDsKfQppbnQgamQoaW50IHgpIHsgaWYgKHggPCAwKXJldHVybiAteDsgcmV0dXJuIHg7IH0KaW50IGRpc3QoeHkgYSwgeHkgYikgeyByZXR1cm4gamQoYS54IC0gYi54KSArIGpkKGEueSAtIGIueSk7IH0KYm9vbCBmbGFnWzIxMl07CmludCBTWzIxMl07CmludCBtYXgoaW50IGEsIGludCBiKSB7IGlmIChhIDwgYilyZXR1cm4gYjsgcmV0dXJuIGE7IH0KaW50IG1pbihpbnQgYSwgaW50IGIpIHsgaWYgKGEgPCBiKXJldHVybiBhOyByZXR1cm4gYjsgfQptYXA8c3RyaW5nLCBpbnQ+TTsKaW50IG1haW4oKSB7CglpbnQgbiwgaSwgajsKCXNjYW5mKCIlZCIsICZuKTsKCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspc2NhbmYoIiVsbGQlbGxkIiwgJmFbaV0ueCwgJmFbaV0ueSk7Cglmb3IgKGkgPSAxOyBpIDwgbjsgaSsrKWZsYWdbaV0gPSBjY3coYVsoaSArIG4gLSAxKSAlIG5dLCBhW2ldLCBhWyhpICsgMSkgJSBuXSk7Cglmb3IgKGkgPSAxOyBpIDwgbjsgaSsrKSB7CgkJc3RyaW5nIHRlbXAgPSAiIjsKCQlmb3IgKGogPSBpOyBqICE9IDA7IGogPSAoaiArIDEpICUgbikgewoJCQl0ZW1wID0gdGVtcCArIChmbGFnW2pdID8gImEiIDogImIiKTsKCQkJTVt0ZW1wXSA9IE1bdGVtcF0gKyAxOwoJCQlpbnQgayA9IGpkKGRpc3QoYVtqXSwgYVsoaiArIDEpICUgbl0pKTsKCQkJd2hpbGUgKGsgPiAwKXRlbXAgKz0gayAlIDEwLCBrIC89IDEwOwoJCX0KCX0KCWZvciAoaSA9IDE7IGkgPD0gbjsgaSsrKVNbaSVuXSA9IFNbKGkgKyBuIC0gMSkgJSBuXSArIGRpc3QoYVsoaSArIG4gLSAxKSAlIG5dLCBhW2klbl0pOwoJaW50IGFucyA9IDA7Cglmb3IgKGkgPSAxOyBpIDwgbjsgaSsrKSB7CgkJc3RyaW5nIHRlbXAgPSAiIjsKCQlpbnQgbm93ID0gMDsKCQlmb3IgKGogPSBpOyBqICE9IDA7IGogPSAoaiArIDEpICUgbikgewoJCQl0ZW1wID0gdGVtcCArIChmbGFnW2pdID8gImEiIDogImIiKTsKCQkJaWYgKE1bdGVtcF0gPT0gMSkgewoJCQkJbm93ICs9IG1pbihTWzBdIC0gU1tqXSwgU1tqXSk7CgkJCQlicmVhazsKCQkJfQoJCQlpbnQgayA9IGpkKGRpc3QoYVtqXSwgYVsoaiArIDEpICUgbl0pKTsKCQkJbm93ICs9IGs7CgkJCXdoaWxlIChrID4gMCl0ZW1wICs9IGsgJSAxMCwgayAvPSAxMDsKCQl9CgkJYW5zID0gbWF4KGFucyxub3ctIG1pbihTW2ldLCBTWzBdIC0gU1tpXSkpOwoJfQoJcHJpbnRmKCIlZCIsIGFucyk7CglyZXR1cm4gMDsKfQ==