#include using namespace std; void input(string f) { string one = f + ".in"; string two = f + ".out"; freopen(one.c_str(), "r", stdin); freopen(two.c_str(), "w", stdout); } const long long N = 57; const long long inf = 1e18; pair p[N]; long long curr_idx; long long area(pair p1, pair p2, pair p3){ long long x1 = p2.first - p1.first; long long y1 = p2.second - p1.second; long long x2 = p3.first - p1.first; long long y2 = p3.second - p1.second; return x1 * y2 - x2 * y1; } bool cmp(pair lvalue, pair rvalue){ if(area(p[curr_idx], lvalue, rvalue) > 0){ return true; } if(area(p[curr_idx], lvalue, rvalue) == 0){ return lvalue < rvalue; } return false; } long long dp[N][N][N][N]; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); input("farm"); long long n, k; cin >> n >> k; for(long long i = 0; i < n; i++){ cin >> p[i].first >> p[i].second; } for(long long i = 0; i < n; i++){ for(long long j = i + 1; j < n; j++){ for(long long left = 1; left <= k; left++){ dp[i][j][left][n] = -inf; } dp[i][j][0][n] = 0; } } long long res = 0; for(long long i = 0; i <= n - k; i++){ sort(p, p + n); curr_idx = i; sort(p + i + 1, p + n, cmp); //for(long long j = i; j < n; j++){ // cout << "point " << j << ": " << p[j].first << " " << p[j].second << "\n"; //} for(long long pr1 = n - 2; pr1 >= i; pr1--){ for(long long pr2 = n - 1; pr2 >= pr1 + 1; pr2--){ for(long long left = 0; left <= k - 2; left++){ for(long long j = n - 1; j >= pr2 + 1; j--){ dp[pr1][pr2][left][j] = dp[pr1][pr2][left][j + 1]; if(area(p[pr1], p[pr2], p[j]) > 0 && left > 0){ //cout << area(p[i], p[pr2], p[j]) << " area "<< dp[pr2][j][left - 1][j+1] << "\n"; dp[pr1][pr2][left][j] = max(dp[pr1][pr2][left][j], area(p[i], p[pr2], p[j]) + dp[pr2][j][left - 1][j+1]); } //cout << dp[pr1][pr2][left][j] << " = " << pr1 << " " << pr2 << " " << left << " " << j << "\n"; } } } } for(long long pr2 = n - 1; pr2 >= i + 1; pr2--){ res = max(res, dp[i][pr2][k-2][pr2 + 1]); //cout << dp[i][pr2][k-2][pr2 + 1] << " = " << p[i].first << " " << p[i].second << ", " << p[pr2].first << " " << p[pr2].second << "\n"; } } if(res <= 0){ cout << "-1\n"; return 0; } cout << res << "\n"; return 0; }