#include <bits/stdc++.h>   using namespace std;   vector<int> v[250001];   int a, ans[250001], n, i, q, kol;   bool pole[250001];   void dfs(int nom) {     int i;     kol++;     pole[nom] = true;     for (i = 0; i < v[nom].size(); i++)       if (!pole[v[nom][i]]) dfs(v[nom][i]);     ans[nom] = kol;   }   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     cin >> q;     while (q--) {       cin >> n;       for (i = 1; i <= n; i++) {         v[i].clear();         pole[i] = false;       }       for (i = 1; i <= n; i++) {         cin >> a;         v[i].push_back(a);       }       for (i = 1; i <= n; i++)         if (!pole[i]) {           kol = 0;           dfs(i);         }       for (i = 1; i <= n - 1; i++) cout << ans[i] <<    ;       cout << ans[n] <<   n ;     }     return 0;   }   