#include #define rep(i,n) for(int i=0;i<(n);i++) #define ALL(A) A.begin(), A.end() #define EPS 1e-6 using namespace std; typedef long long ll; typedef pair P; bool is_rectangle(vector

p){ int l2[4] = {0}; rep (i, 4) l2[i] = (p[i].first - p[(i+1)%4].first) * (p[i].first - p[(i+1)%4].first) + (p[i].second - p[(i+1)%4].second) * (p[i].second - p[(i+1)%4].second); if (l2[0] != l2[2] || l2[1] != l2[3]) return false; return (l2[0] + l2[1] == l2[2] + l2[3]); } bool is_on_line(vector

p, vector

q){ int n = q.size(); rep (i, n){ bool on = true; rep (j, 4){ P base = P(p[(j+1) % 4].first - p[j].first, p[(j+1) % 4].second - p[j].second); P cand = P(q[i].first - p[j].first, q[i].second - p[j].second); double ratex = (double)cand.first / (double)base.first; double ratey = (double)cand.second / (double)base.second; if (ratex < 1. + EPS && ratey < 1. + EPS && abs(ratex - ratex) < EPS) continue; on = false; break; } // end rep if (!on) return false; } // end rep return true; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int q; cin >> q; rep (t, q){ int n; cin >> n; vector

p(n); rep (i, n) p[i].first = 0, p[i].second = 0; rep (i, n) cin >> p[i].first >> p[i].second; if (n == 1 || n == 2){ cout << "YES" << endl; continue; }else if (n == 3){ int l2[3] = {0}; rep (i, 3) l2[i] = (p[i].first - p[(i+1)%3].first) * (p[i].first - p[(i+1)%3].first) + (p[i].second - p[(i+1)%3].second) * (p[i].second - p[(i+1)%3].second); sort(l2, l2 + 3); cout << (l2[0] + l2[1] == l2[2] ? "YES" : "NO") << endl; continue; } // end if bool ok = false; for (int i = 0; i < 1< cand; cand.clear(); vector

remain; remain.clear(); for (int j = 0; j < n; ++j){ if (i & (1<