#include <iostream>
#include <vector>

using namespace std;
struct r{
int x; int y;
};

bool right(r pl, r pr,r p){

p.x-=pl.x;p.y-=pl.y;
pr.y-=pl.y;
pr.x-=pl.x;

if(pr.x*p.y-p.x*pr.y <0)
    return true;
return false;
}
int spol(vector<r> pol){
    int ans=0;
for(int i=0;i<pol.size()-1;i++){
 ans+=pol[i].x*pol[i+1].y;
   ans-=pol[i+1].x*pol[i].y;
}
ans+=pol[pol.size()-1].x*pol[0].y;
ans-=pol[pol.size()-1].y*pol[0].x;
return ans;
}

int s(r p1,r p2,r p3){
    int r=( (p1.x-p3.x)*(p2.y-p3.y)-(p2.x-p3.x)*(p2.y-p3.y) )/2;
    if(r>0)return r;
    return -r;
}
vector<r> graham(vector<r> points) { //graham algorithm
    // ??????? p0, ??? ? ??????
    r p0 = points[0];
    for (r p : points)
        if (p.x < p0.x || (p.x == p0.x && p.y < p0.y))
            p0 = p;

    // ????????? ????? ?? ????????? ????
    sort(points.begin(), points.end(), [&](r a, r b){
         a.x-=p0.x;a.y-=p0.y;
b.y-=p0.y;
b.x-=p0.x;
        return (a ) ^ (b) > 0;
    });
    vector<r> deleted;
    vector<r> hull;
    for (r p : points) {
        // ??????? ????????? ????? ?? ????? ???? ??? ???????? ????????????
        deleted.push_back({-1,-1});
        while (hull.size() >= 2) {
            r new_vector = p - hull.back();
            r last_vector = hull.back() - hull[hull.size() - 2];
            // ???? ??? ????????? ??????? ???????????? ?????, ??????? ????????? ?????
            if (new_vector ^ last_vector > 0)
                {deleted.back()=hull.back();hull.pop_back();}
            else
                break;
        }
        if(deleted.back()=={-1,-1})deleted.pop_back();
        hull.push_back(p);
    }
    vector<vector<r>> ret;
    ret[0]=hull; ret[1]=deleted;
    return ret;
}

int main()
{
    int n;cin>>n;
    int S; int maxr,S2;
    vector<r>points; points.resize(n);
    r point;int x,int y;
    for(int i=0;i<n;i++){cin>>x>>y; point.x=x;point.y=y;}
    vector<vector<r>> sorted=graham(points);
    int hullsize=sorted[0].size();
    r point,pointl,pointr,pointdel;
    for(int i=0;i<hullsize;i++){
        point=sorted[0][i];
        if(i!=0)pointl=sorted[0][i-1];
        else pointl=sorted[0][hullsize-1];
        if(i!=hullsize-1)pointr=sorted[0][i+1];
        else pointl=sorted[0][0];
        pointdel=sorted[1][i];

    if(right(pointl,pointr,pointdel)){S2=S-s(pointl,pointdel,point)-s(pointr,pointdel,point);}
    else S2=S-s(pointr,pointl,point);
    maxr=(S2>maxr)?S2:maxr;
    }
    cout << maxr << endl;
    return 0;
}