t = int(input())
for _ in range(t):
    n = int(input())
    b = list(map(int, input().split()))
    
    ib = sorted((b[i], i) for i in range(n))
    
    if ib[0][0] != 0:
        print(-1)
        continue
        
    blocks = []
    curr_val = ib[0][0]
    curr_indices = [ib[0][1]]
    
    for i in range(1, n):
        if ib[i][0] == curr_val:
            curr_indices.append(ib[i][1])
        else:
            blocks.append((curr_val, curr_indices))
            curr_val = ib[i][0]
            curr_indices = [ib[i][1]]
    blocks.append((curr_val, curr_indices))
    
    ans_a = [0] * n
    possible = True
    num_blocks = len(blocks)
    
    for i in range(num_blocks - 1):
        diff_b = blocks[i+1][0] - blocks[i][0]
        count_curr = len(blocks[i][1])
        
        if diff_b % count_curr != 0:
            possible = False
            break
            
        val_a = diff_b // count_curr
        if val_a <= 0:
            possible = False
            break
            
        if i > 0 and val_a <= ans_a[blocks[i-1][1][0]]:
            possible = False
            break
            
        for idx in blocks[i][1]:
            ans_a[idx] = val_a
            
    if possible:
        if num_blocks == 1:
            last_val_a = 1
        else:
            last_val_a = ans_a[blocks[-2][1][0]] + 1
            
        for idx in blocks[-1][1]:
            ans_a[idx] = last_val_a
            
    if not possible:
        print(-1)
    else:
        print(*(ans_a))