#include <iostream>
#include <vector>
using namespace std;
typedef long long int ll;
ll gcd(ll a, ll b) {
if (b == 0) return a;
return gcd(b, a % b);
}
int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; i++) cin >> arr[i];
vector<int> binary(n);
for (int i = 0; i < n; i++) {
binary[i] = (gcd(arr[i], arr[(i + 1) % n]) > 1) ? 1 : 0;
}
vector<int> run_lengths;
int i = 0;
while (i < n) {
if (binary[i] == 1) {
int j = i;
while (j < n && binary[j] == 1) j++;
run_lengths.push_back(j - i);
i = j;
} else {
i++;
}
}
if (binary[0] == 1 && binary[n - 1] == 1) {
int first = 0, last = run_lengths.size() - 1;
int merged = run_lengths[0] + run_lengths.back();
run_lengths[0] = merged;
run_lengths.pop_back();
}
for(int k = 2 ; k<=n;k++){
int ans = 0 ;
for(int l : run_lengths){
ans += l/(k-1);
}
cout<<ans<<" ";
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsOwoKbGwgZ2NkKGxsIGEsIGxsIGIpIHsKICAgIGlmIChiID09IDApIHJldHVybiBhOwogICAgcmV0dXJuIGdjZChiLCBhICUgYik7Cn0KCmludCBtYWluKCkgewogICAgaW50IHQ7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBpbnQgbjsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICB2ZWN0b3I8aW50PiBhcnIobik7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGNpbiA+PiBhcnJbaV07CiAgICAgICAgdmVjdG9yPGludD4gYmluYXJ5KG4pOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGJpbmFyeVtpXSA9IChnY2QoYXJyW2ldLCBhcnJbKGkgKyAxKSAlIG5dKSA+IDEpID8gMSA6IDA7CiAgICAgICAgfQoKICAgICAgICB2ZWN0b3I8aW50PiBydW5fbGVuZ3RoczsKICAgICAgICBpbnQgaSA9IDA7CiAgICAgICAgd2hpbGUgKGkgPCBuKSB7CiAgICAgICAgICAgIGlmIChiaW5hcnlbaV0gPT0gMSkgewogICAgICAgICAgICAgICAgaW50IGogPSBpOwogICAgICAgICAgICAgICAgd2hpbGUgKGogPCBuICYmIGJpbmFyeVtqXSA9PSAxKSBqKys7CiAgICAgICAgICAgICAgICBydW5fbGVuZ3Rocy5wdXNoX2JhY2soaiAtIGkpOwogICAgICAgICAgICAgICAgaSA9IGo7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgCiAgICAgICAgaWYgKGJpbmFyeVswXSA9PSAxICYmIGJpbmFyeVtuIC0gMV0gPT0gMSkgewoKICAgICAgICAgICAgaW50IGZpcnN0ID0gMCwgbGFzdCA9IHJ1bl9sZW5ndGhzLnNpemUoKSAtIDE7CgogICAgICAgICAgICBpbnQgbWVyZ2VkID0gcnVuX2xlbmd0aHNbMF0gKyBydW5fbGVuZ3Rocy5iYWNrKCk7CiAgICAgICAgICAgIHJ1bl9sZW5ndGhzWzBdID0gbWVyZ2VkOwogICAgICAgICAgICBydW5fbGVuZ3Rocy5wb3BfYmFjaygpOwogICAgICAgIH0KICAgIAogICAgZm9yKGludCBrID0gMiA7IGs8PW47aysrKXsKICAgIGludCBhbnMgPSAwIDsgCiAgICBmb3IoaW50IGwgOiBydW5fbGVuZ3Rocyl7CiAgICAJYW5zICs9IGwvKGstMSk7CiAgICB9CiAgICBjb3V0PDxhbnM8PCIgIjsKICAgIH0KICAgIH0KCiAgICByZXR1cm4gMDsKfQo=