#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <random>
 
using namespace std;
using namespace __gnu_pbds;
 
typedef long long ll;
typedef unsigned long long ull;
typedef tree<pair<int, int>, null_type, less<>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
#define AboTaha_on_da_code ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define X first
#define Y second
 
const int dx[8]={0, 0, 1, -1, 1, -1, -1, 1};
const int dy[8]={1, -1, 0, 0, 1, -1, 1, -1};
const double EPS = 1e-8;
const int mod = 1e9+7;
// BEFORE coding are you sure you understood the statement correctly?
// PLEASE do not forget to read the sample explanation carefully.
// WATCH out for overflows & RTs in general.
// TEST your idea or code on the corner cases.
// ANALYZE each idea you have thoroughly.
 
const double PI = acos(-1);
 
void burn(int tc)
{
    int n; cin >> n;
    vector <pair<int, int>> Ps(n);
    for (auto &[x, y] : Ps) cin >> x >> y;
 
    for (int i = 0; i < n; i++) {
        int ans = n-1;
        auto &p1 = Ps[i];
        vector <double> angs;
        for (int j = 0; j < n; j++) {
            if (j == i) continue;
            angs.push_back(fmod(atan2(Ps[j].Y-p1.Y, Ps[j].X-p1.X)+PI*2, PI*2));
        }
        sort(angs.begin(), angs.end());
        int sz = n-1;
        for (int j = 0; j < sz; j++) {
            angs.push_back(angs[j]+PI*2);
        }
        for (int j = 0, r = 0; j < 2*sz; j++) {
            while(r < 2*sz && angs[r]-angs[j] <= PI) r++;
            ans = min(ans, sz-r+j);
        }
        ans = max(ans, 0);
        cout << ans << '\n';
    }
}
 
int main()
{
    AboTaha_on_da_code
 
      freopen("bedone.in", "r", stdin);
//    freopen("Aout.txt", "w", stdout);
 
    int T = 1; cin >> T;
 
    for (int i = 1; i <= T; i++) {
//        cout << "Case " << i << ": ";
        burn(i);
//        cout << '\n';
    }
    return 0;
}
				I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPHJhbmRvbT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVsbDsKdHlwZWRlZiB0cmVlPHBhaXI8aW50LCBpbnQ+LCBudWxsX3R5cGUsIGxlc3M8PiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4gb3JkZXJlZF9zZXQ7CiNkZWZpbmUgQWJvVGFoYV9vbl9kYV9jb2RlIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpOyBjb3V0LnRpZShOVUxMKTsKI2RlZmluZSBYIGZpcnN0CiNkZWZpbmUgWSBzZWNvbmQKCmNvbnN0IGludCBkeFs4XT17MCwgMCwgMSwgLTEsIDEsIC0xLCAtMSwgMX07CmNvbnN0IGludCBkeVs4XT17MSwgLTEsIDAsIDAsIDEsIC0xLCAxLCAtMX07CmNvbnN0IGRvdWJsZSBFUFMgPSAxZS04Owpjb25zdCBpbnQgbW9kID0gMWU5Kzc7Ci8vIEJFRk9SRSBjb2RpbmcgYXJlIHlvdSBzdXJlIHlvdSB1bmRlcnN0b29kIHRoZSBzdGF0ZW1lbnQgY29ycmVjdGx5PwovLyBQTEVBU0UgZG8gbm90IGZvcmdldCB0byByZWFkIHRoZSBzYW1wbGUgZXhwbGFuYXRpb24gY2FyZWZ1bGx5LgovLyBXQVRDSCBvdXQgZm9yIG92ZXJmbG93cyAmIFJUcyBpbiBnZW5lcmFsLgovLyBURVNUIHlvdXIgaWRlYSBvciBjb2RlIG9uIHRoZSBjb3JuZXIgY2FzZXMuCi8vIEFOQUxZWkUgZWFjaCBpZGVhIHlvdSBoYXZlIHRob3JvdWdobHkuCgpjb25zdCBkb3VibGUgUEkgPSBhY29zKC0xKTsKCnZvaWQgYnVybihpbnQgdGMpCnsKICAgIGludCBuOyBjaW4gPj4gbjsKICAgIHZlY3RvciA8cGFpcjxpbnQsIGludD4+IFBzKG4pOwogICAgZm9yIChhdXRvICZbeCwgeV0gOiBQcykgY2luID4+IHggPj4geTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGludCBhbnMgPSBuLTE7CiAgICAgICAgYXV0byAmcDEgPSBQc1tpXTsKICAgICAgICB2ZWN0b3IgPGRvdWJsZT4gYW5nczsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG47IGorKykgewogICAgICAgICAgICBpZiAoaiA9PSBpKSBjb250aW51ZTsKICAgICAgICAgICAgYW5ncy5wdXNoX2JhY2soZm1vZChhdGFuMihQc1tqXS5ZLXAxLlksIFBzW2pdLlgtcDEuWCkrUEkqMiwgUEkqMikpOwogICAgICAgIH0KICAgICAgICBzb3J0KGFuZ3MuYmVnaW4oKSwgYW5ncy5lbmQoKSk7CiAgICAgICAgaW50IHN6ID0gbi0xOwogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgc3o7IGorKykgewogICAgICAgICAgICBhbmdzLnB1c2hfYmFjayhhbmdzW2pdK1BJKjIpOwogICAgICAgIH0KICAgICAgICBmb3IgKGludCBqID0gMCwgciA9IDA7IGogPCAyKnN6OyBqKyspIHsKICAgICAgICAgICAgd2hpbGUociA8IDIqc3ogJiYgYW5nc1tyXS1hbmdzW2pdIDw9IFBJKSByKys7CiAgICAgICAgICAgIGFucyA9IG1pbihhbnMsIHN6LXIraik7CiAgICAgICAgfQogICAgICAgIGFucyA9IG1heChhbnMsIDApOwogICAgICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgQWJvVGFoYV9vbl9kYV9jb2RlCgogICAgICBmcmVvcGVuKCJiZWRvbmUuaW4iLCAiciIsIHN0ZGluKTsKLy8gICAgZnJlb3BlbigiQW91dC50eHQiLCAidyIsIHN0ZG91dCk7CgogICAgaW50IFQgPSAxOyBjaW4gPj4gVDsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBUOyBpKyspIHsKLy8gICAgICAgIGNvdXQgPDwgIkNhc2UgIiA8PCBpIDw8ICI6ICI7CiAgICAgICAgYnVybihpKTsKLy8gICAgICAgIGNvdXQgPDwgJ1xuJzsKICAgIH0KICAgIHJldHVybiAwOwp9