#include using namespace std; #define rep(i, a, b) for(int i = a; i < (b); ++i) #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() typedef long long ll; typedef pair pii; typedef vector vi; typedef vector> vvi; typedef vector> vpii; template using vec = vector; template using uset = unordered_set; template using umap = unordered_map; void solve () { ll N; cin >> N; set xset; set yset; vpii stakes; rep(i, 0, N) { int X, Y; cin >> X >> Y; stakes.emplace_back(X , Y); xset.emplace(X, i); yset.emplace(Y, i); } rep(i, 0, N/4 - 1) { rep(i2, 0, 2) { auto it = i2 == 0 ? xset.begin() : prev(xset.end()); auto idx = it->second; xset.erase(it); yset.erase(make_pair(stakes[idx].second, idx)); } rep(i2, 0, 2) { auto it = i2 == 0 ? yset.begin() : prev(yset.end()); auto idx = it->second; yset.erase(it); xset.erase(make_pair(stakes[idx].first, idx)); } } auto it = xset.begin(); auto a = stakes[(it++)->second]; auto b = stakes[(it++)->second]; auto c = stakes[(it++)->second]; auto d = stakes[(it++)->second]; double d1 = std::sqrt((a.first - b.first) * (a.first - b.first) + (a.second - b.second) * (a.second - b.second)); double d2 = std::sqrt((a.first - c.first) * (a.first - c.first) + (a.second - c.second) * (a.second - c.second)); double d3 = std::sqrt((a.first - d.first) * (a.first - d.first) + (a.second - d.second) * (a.second - d.second)); // double aDist = min(d1,d2); // double bDist = min(d1,d3); array dists = {d1, d2, d3}; std::sort(dists.begin(), dists.end()); ll area = ll(dists[0] * dists[1]); cout << area << endl; } int main() { cin.tie(0)->sync_with_stdio(0); cin.exceptions(cin.failbit); ll T = 1; //cin >> T; rep(i, 0, T) solve(); return 0; }