1417_C. k-Amazing Numbers
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 ≤ t ≤ 1000) — the number of test cases. Then t test cases follow.

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

It is guaranteed that the sum of n over all test cases does not exceed 3 ⋅ 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 
```python
import os
import sys
from io import BytesIO, IOBase

BUFSIZE = 8192


class FastIO(IOBase):
    newlines = 0

    def __init__(self, file):
        self._fd = file.fileno()
        self.buffer = BytesIO()
        self.writable = "x" in file.mode or "r" not in file.mode
        self.write = self.buffer.write if self.writable else None

    def read(self):
        while True:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            if not b:
                break
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines = 0
        return self.buffer.read()

    def readline(self):
        while self.newlines == 0:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            self.newlines = b.count(b"\n") + (not b)
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines -= 1
        return self.buffer.readline()

    def flush(self):
        if self.writable:
            os.write(self._fd, self.buffer.getvalue())
            self.buffer.truncate(0), self.buffer.seek(0)


class IOWrapper(IOBase):
    def __init__(self, file):
        self.buffer = FastIO(file)
        self.flush = self.buffer.flush
        self.writable = self.buffer.writable
        self.write = lambda s: self.buffer.write(s.encode("ascii"))
        self.read = lambda: self.buffer.read().decode("ascii")
        self.readline = lambda: self.buffer.readline().decode("ascii")


sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)
input = lambda: sys.stdin.readline().rstrip("\r\n")
#######################################
from collections import *
from collections import deque
from operator import itemgetter , attrgetter
from decimal import *
import bisect
import math
import heapq as hq
#import sympy
MOD=10**9 +7


def is_prime(n):
  if n == 2 or n == 3: return True
  if n < 2 or n%2 == 0: return False
  if n < 9: return True
  if n%3 == 0: return False
  r = int(n**0.5)
  # since all primes > 3 are of the form 6n ± 1
  # start with f=5 (which is prime)
  # and test f, f+2 for being prime
  # then loop by 6.
  f = 5
  while f <= r:

    if n % f == 0: return False
    if n % (f+2) == 0: return False
    f += 6
  return True

def pow(a,b,m):
    ans=1
    while b:
        if b&1:
            ans=(ans*a)%m
        b//=2
        a=(a*a)%m
    return ans
vis=[]
graph=[]
def dfs(v):
    if vis[v]: return 0
    vis[v]=True

    temp=0
    for vv in graph[v]:
        temp+=dfs(vv)
    return 1+temp
def ispalindrome(s):
    if s[:]==s[::-1]:
        return 1
    return 0
for _ in range(int(input())):
    n=int(input())
    t=list(map(int,input().split()))
    l=[0]
    ans=[-1 for i in range(n+1)]
    for i in t:
        l.append(i)
    maxdiff=[0 for i in range(n+1)]
    last=[0 for i in range(n+1)]
    for i in range(1,n+1):
        maxdiff[l[i]]=max(maxdiff[l[i]],i-last[l[i]])
        last[l[i]]=i
    for x in range(1,n+1):
        maxdiff[x]=max(maxdiff[x],n+1-last[x])
        for i in range(maxdiff[x],n+1):
            if ans[i]!=-1:
                break
            ans[i]=x
    for i in range(1,n+1):
        print(ans[i],end=" ")
    print()
```