/*hdu6098[RMQ+筛法] 2017多校6*/ #include <bits/stdc++.h> using namespace std; int T, n, st[100005][20], len[100005], a[100005]; void st_init() { len[0] = -1; for (int i = 1; i <= n; i++) { st[i][0] = a[i]; len[i] = (i & (i - 1)) == 0 ? len[i - 1] + 1 : len[i - 1]; } for (int j = 1; j <= len[n]; j++) { for (int i = 1; i + (1 << j) - 1 <= n; i++) { st[i][j] = max(st[i][j - 1], st[i + (1 << (j - 1))][j - 1]); } } } int query(int l, int r) { int k = len[r - l + 1]; return max(st[l][k], st[r - (1 << k) + 1][k]); } int main() { scanf("%d", &T); while (T--) { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); } st_init(); for (int i = 2; i <= n; i++) { int ans = 0; for (int j = 0; j < n; j += i) { //cout<<"["<<j+1<<", "<<min(n, j + i - 1)<<"] "; ans = max(query(j + 1, min(n, j + i - 1)), ans); } if(i>2) printf(" "); printf("%d", ans); } puts(""); } return 0; }