#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;
int t, n, x, y;
struct hashFunction {
size_t operator()(const pair<int,int> &x) const {
return x.first ^ x.second;
}
};
vector<pair<int, int> > vec;
int main() {
scanf("%d", &t);
while(t--) {
vec.clear();
unordered_set<pair<int, int>, hashFunction> left;
unordered_set<pair<int, int>, hashFunction> right;
scanf("%d", &n);
int min = 10005, max = -10005;
for (int i = 0; i < n; i++) {
scanf("%d%d", &x, &y);
vec.emplace_back(make_pair(x, y));
if (x < min) min = x;
if (x > max) max = x;
}
double mid = (double)(min + max) / 2;
for (auto &it : vec) {
if (it.first < mid) left.insert(it);
else if (it.first > mid) right.insert(it);
}
if (left.size() != right.size()) printf("NO\n");
else {
bool f = true;
for (auto &it : left) {
int rightX = (min + max) - it.first;
pair<int, int> rightMatch = make_pair(rightX, it.second);
if (right.find(rightMatch) == right.end()) {
f = false;
break;
}
}
if (f) printf("YES\n");
else printf("NO\n");
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IHQsIG4sIHgsIHk7CgpzdHJ1Y3QgaGFzaEZ1bmN0aW9uIHsKICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBwYWlyPGludCxpbnQ+ICZ4KSBjb25zdCB7CiAgICByZXR1cm4geC5maXJzdCBeIHguc2Vjb25kOwogIH0KfTsKCnZlY3RvcjxwYWlyPGludCwgaW50PiA+IHZlYzsKCmludCBtYWluKCkgewogICAgc2NhbmYoIiVkIiwgJnQpOwogICAgd2hpbGUodC0tKSB7CiAgICAgICAgdmVjLmNsZWFyKCk7CiAgICAgICAgdW5vcmRlcmVkX3NldDxwYWlyPGludCwgaW50PiwgaGFzaEZ1bmN0aW9uPiBsZWZ0OwogICAgICAgIHVub3JkZXJlZF9zZXQ8cGFpcjxpbnQsIGludD4sIGhhc2hGdW5jdGlvbj4gcmlnaHQ7CiAgICAgICAgc2NhbmYoIiVkIiwgJm4pOwogICAgICAgIGludCBtaW4gPSAxMDAwNSwgbWF4ID0gLTEwMDA1OwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIHNjYW5mKCIlZCVkIiwgJngsICZ5KTsKICAgICAgICAgICAgdmVjLmVtcGxhY2VfYmFjayhtYWtlX3BhaXIoeCwgeSkpOwogICAgICAgICAgICBpZiAoeCA8IG1pbikgbWluID0geDsKICAgICAgICAgICAgaWYgKHggPiBtYXgpIG1heCA9IHg7CiAgICAgICAgfQogICAgICAgIGRvdWJsZSBtaWQgPSAoZG91YmxlKShtaW4gKyBtYXgpIC8gMjsKICAgICAgICBmb3IgKGF1dG8gJml0IDogdmVjKSB7CiAgICAgICAgICAgIGlmIChpdC5maXJzdCA8IG1pZCkgbGVmdC5pbnNlcnQoaXQpOwogICAgICAgICAgICBlbHNlIGlmIChpdC5maXJzdCA+IG1pZCkgcmlnaHQuaW5zZXJ0KGl0KTsKICAgICAgICB9CiAgICAgICAgaWYgKGxlZnQuc2l6ZSgpICE9IHJpZ2h0LnNpemUoKSkgcHJpbnRmKCJOT1xuIik7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGJvb2wgZiA9IHRydWU7CiAgICAgICAgICAgIGZvciAoYXV0byAmaXQgOiBsZWZ0KSB7CiAgICAgICAgICAgICAgICBpbnQgcmlnaHRYID0gKG1pbiArIG1heCkgLSBpdC5maXJzdDsKICAgICAgICAgICAgICAgIHBhaXI8aW50LCBpbnQ+IHJpZ2h0TWF0Y2ggPSBtYWtlX3BhaXIocmlnaHRYLCBpdC5zZWNvbmQpOwogICAgICAgICAgICAgICAgaWYgKHJpZ2h0LmZpbmQocmlnaHRNYXRjaCkgPT0gcmlnaHQuZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICBmID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGYpIHByaW50ZigiWUVTXG4iKTsKICAgICAgICAgICAgZWxzZSBwcmludGYoIk5PXG4iKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQ==