There are n chef's in Chefland. There is a festival in Chefland in which each chef is asked to vote a person as his best friend. Obviously, a person can't vote himself as his best friend.  Note that the best friend relationship is not necessarily bi-directional, i.e. it might be possible that x is best friend of y, but y is not a best friend of x.

Devu was the election commissioner who conducted this voting. Unfortunately, he was sleeping during the voting time. So, he could not see the actual vote of each person, instead after the voting, he counted the number of votes of each person and found that number of votes of i-th person was equal to ci. 

Now he is wondering whether this distribution of votes corresponds to some actual voting or some fraudulent voting has happened. If the current distribution of votes does not correspond to any real voting, print -1. Otherwise, print any one of the possible voting which might have lead to the current distribution. If there are more than one possible ways of voting leading to the current distribution, you can print any one of them.

-----Input-----
- First line of the input contains a single integer T denoting number of test cases.
- First line of each test case, contains a single integer n.
- Second line of each test case, contains n space separated integers denoting array c.

-----Output-----
For each test case,

- If there is no real voting corresponding to given distribution of votes, print -1 in a single line.
- Otherwise, print n space separated integers denoting a possible voting leading to current distribution of votes. i-th integer should denote the index of the person (1 based indexing) whom i-th person has voted as his best friend.

-----Constraints and Subtasks-----
- 1 ≤ T ≤ 500
- 1 ≤ n ≤ 50
- 0 ≤ ci ≤ n

-----Example-----
Input:
3
3
1 1 1
3
3 0 0
3
2 2 0

Output:
2 3 1
-1
-1

-----Explanation-----
Example 1: In this example, each person has received one vote. One possible example of real voting leading to this distribution is {2, 3, 1}. In this distribution, number of votes of all three persons are equal to 1. Also it is real voting because no person votes himself as his best friend. 

You can also output another possible distribution {3, 1, 2} too.

Example 2: There is no real voting  corresponding to this voting distribution.

Example 3: There is no real voting  corresponding to this voting distribution.

```python

USER_FILENAME = "<user_code>"
import sys, json, builtins
import math, heapq, bisect, itertools, functools, collections, statistics, fractions, decimal, operator, array, random, re, string, os, pathlib
try:
    import resource as _res
except Exception:
    _res = None
from collections import Counter, defaultdict, deque, OrderedDict
from functools import lru_cache, reduce
from itertools import accumulate, permutations, combinations, product
from math import gcd, ceil, floor, sqrt
from decimal import Decimal
try:
    from typing import *
except Exception:
    pass
try:
    sys.setrecursionlimit(1_000_000)
except Exception:
    pass
try:
    import site as _site
    try:
        _sys_sites = _site.getsitepackages() if hasattr(_site, "getsitepackages") else []
        for _p in _sys_sites:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
    try:
        _usp = _site.getusersitepackages()
        if isinstance(_usp, str):
            _usp = [_usp]
        for _p in _usp:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
except Exception:
    pass

ns = {"__name__": "__main__"}
for _k, _v in list(globals().items()):
    if not _k.startswith("_"):
        ns[_k] = _v
_CODE = 'for _ in range(int(input())):\n n=int(input())\n a=list(map(int,input().split()))\n if sum(a)!=n or max(a)==n:\n  print(-1)\n  continue\n else:\n  rg=[]\n  for i in range(n):\n   if a[i]>0:\n    rg.append([i,a[i]])\n  new=[0 for _ in range(n)]\n  new[rg[0][0]]=rg[-1][0]+1\n  rg[-1][1]-=1\n  for i in range(1,len(rg)):\n   new[rg[i][0]]=rg[i-1][0]+1\n   rg[i-1][1]-=1\n  j=0 \n  i=0\n  while i<=n-1:\n   if new[i]==0:\n    if rg[j][1]>0:\n     new[i]=rg[j][0]+1\n     rg[j][1]-=1\n     i+=1\n    else:\n     j+=1\n    if rg[j][1]==0:\n     j+=1\n   else:\n    i+=1\n\n\n   \n  print(*new)\n'
_co = compile(_CODE, USER_FILENAME, "exec")
exec(_co, ns, ns)

```

Measured memory_bytes: 13731