#pragma comment(linker, "/STACK:60777216") #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long double ld; typedef long long ll; typedef pair pii; typedef pair pdd; typedef vector vi; typedef vector vd; typedef pair pl; #define FOR(i,a,b) for(int i=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define SORT(v) sort((v).begin(),(v).end()) #define UN(v) SORT(v),(v).erase(unique((v).begin(),(v).end()),(v).end()) #define CL(a,b) memset(a,b,sizeof a) #define pb push_back int n,k; int x[55],y[55]; ll r[51][51][51][51][2]; ll sq(ll x1,ll x2,ll x3){ return (x[x2]-x[x1])*ll(y[x3]-y[x1])-(x[x3]-x[x1])*ll(y[x2]-y[x1]); } ll go(int prev,int prevprev,int to,int num,int type){ ll& d = r[prev][prevprev][to][num][type]; if(d!=-1) return d; d=-2; if(num==0){ if(prevprev==to) return d=(y[prev]+y[to])*ll(x[to]-x[prev]); if(x[prev]>=x[to]) return d=-2; if(sq(prevprev,prev,to)*(type==0?1:-1)<0) return d=(y[prev]+y[to])*ll(x[to]-x[prev]); return d=-2; }else{ REP(i,n)if(x[i]>x[prev] && x[i]=0) continue; ll v = go(i,prev,to,num-1,type); if(v==-2)continue; v += (y[prev] + y[i])*ll(x[i]-x[prev]); if(d==-2 || d>n>>k; REP(i,n)scanf("%d %d",x+i,y+i); if(k<=2) {puts("-1");return 0;} ll res = -1; REP(i,n)REP(j,n)if(x[i]y[i1])REP(j,n)REP(j1,n)if(x[j]==x[j1] && y[j1]