#include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; typedef unsigned long long ULL; const int MaxN = 1e5; vectorp; int T, n, a[MaxN + 5], num[MaxN + 5], loc[MaxN + 5], ans[MaxN + 5]; bool Cheak(int x) { p.clear(); for(int i = 1; i <= x; i++) if(++num[a[i]] == 1) p.push_back(a[i]); int pos = x + 1; for(int i = x + 1; i <= n; i++) { loc[a[i]]++; if(i % x == 0) { for(int j = 0; j < p.size(); j++) { int t = p[j]; if(num[t] != loc[t]) { for(int k = 1; k <= x; k++) num[a[k]]--; for(int k = i; k >= pos; k--) loc[a[k]]--; return 0; } } for(int j = i; j >= pos; j--) loc[a[j]]--; pos = i + 1; } } for(int k = 1; k <= x; k++) num[a[k]]--; return 1; } int main() { scanf("%d", &T); while(T--) { scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); int tot = 0; memset(num, 0, sizeof(num)); memset(loc, 0, sizeof(loc)); Cheak(2); for(int i = 1; i <= n; i++) { if(n % i == 0) if(Cheak(i)) ans[++tot] = i; } for(int i = 1; i <= tot; i++) { if(i != tot) printf("%d ", ans[i]); else printf("%d\n", ans[i]); } } }