I found an interesting problem on https://codeforces.com/problemset/problem/1417/C:
You are given an array $a$ consisting of $n$ integers numbered from $1$ to $n$.

Let's define the $k$-amazing number of the array as the minimum number that occurs in all of the subsegments of the array having length $k$ (recall that a subsegment of $a$ of length $k$ is a contiguous part of $a$ containing exactly $k$ elements). If there is no integer occuring in all subsegments of length $k$ for some value of $k$, then the $k$-amazing number is $-1$.

For each $k$ from $1$ to $n$ calculate the $k$-amazing number of the array $a$.


-----Input-----

The first line contains one integer $t$ ($1 \le t \le 1000$) — the number of test cases. Then $t$ test cases follow.

The first line of each test case contains one integer $n$ ($1 \le n \le 3 \cdot 10^5$) — the number of elements in the array. The second line contains $n$ integers $a_1, a_2, \dots, a_n$ ($1 \le a_i \le n$) — the elements of the array. 

It is guaranteed that the sum of $n$ over all test cases does not exceed $3 \cdot 10^5$.


-----Output-----

For each test case print $n$ integers, where the $i$-th integer is equal to the $i$-amazing number of the array.


-----Example-----
Input
3
5
1 2 3 4 5
5
4 4 4 4 2
6
1 3 1 5 3 1

Output
-1 -1 3 2 1 
-1 4 4 4 2 
-1 -1 1 1 1 1

I tried it in Python, but could not do it. Can you solve it?
import sys

    
def main():
    #n = iinput()
    #k = iinput() 
    #m = iinput() 
    n = int(sys.stdin.readline().strip()) 
    #n, k = rinput()
    #n, m = rinput()
    #m, k = rinput()
    #n, k, m = rinput()
    #n, m, k = rinput()
    #k, n, m = rinput()
    #k, m, n = rinput() 
    #m, k, n = rinput()
    #m, n, k = rinput()
    q = list(map(int, sys.stdin.readline().split()))
    #q = linput()
    clovar, p, x = {}, [], 1e9
    for i in range(n):
        if q[i] in clovar:
            clovar[q[i]].append(i)
        else:
            clovar[q[i]] = [i]
    for o in clovar:
        t = clovar[o]
        ma = max(t[0] + 1, n - t[-1])
        dlinat = len(t) - 1
        for i in range(dlinat): 
            ma = max(t[i + 1] - t[i], ma)
        p.append([ma, o])
    p.sort()
    ans = [p[0]]
    dlinap = len(p)
    for i in range(1, dlinap):
        if ans[-1][0] != p[i][0]:
            ans.append(p[i])
    ans.append([n + 1, 1e9])
    dlina_1 = ans[0][0] - 1
    print(*[-1 for i in range(dlina_1)], end=" ")
    dlinaans = len(ans) - 1
    for i in range(dlinaans):
        x = min(x, ans[i][1])
        dlinax = ans[i + 1][0] - ans[i][0]
        print(*[x for o in range(dlinax)], end=" ")
    print()
           
        
            
    
    
    
    
    
    
            
                
        
    
            
        

            
        
    
                
    
    
    
            
    
        
    

for i in range(int(sys.stdin.readline().strip()) ):
    main()