"""
注意:
比K小符合题意的最大值不能通过循环来求,比如91111111111,超时
根据以下测试用例,可以找出规律和坑:
9876 ---8999
8765 ---8000
6789 ---6669
340 ---339
990 ---899
"""
def getMax(lis,dic):
#获取比K小符合题意的最大值
i=0
while True:
if i==len(lis)-1:
break
if lis[i + 1] not in dic[lis[i]]: #后一位数不能由前一位到达
if lis[i+1]>lis[i]: #后数大于前数
lis[i+1]=lis[i]
lis[i + 2:] = [9] * len(lis[i + 2:])
else:
if 0 in dic[lis[i]]:
lis[i+1]=0
else:
lis[i]=lis[i]-1
lis[i+1:]=[9]*len(lis[i+1:])
if i==0:
return lis
elif lis[i] in dic[lis[i-1]]:
return lis
else:
i=i-2
i+=1
return lis
#每一个数作为键,每个数可达的数放到数组中作为值
dic={}
dic[0]=[0]
dic[1]=[i for i in range(10)]
dic[2]=[0,2,3,5,6,8,9]
dic[3]=[3,6,9]
dic[4]=[0,4,5,6,7,8,9]
dic[5]=[0,5,6,8,9]
dic[6]=[6,9]
dic[7]=[0,7,8,9]
dic[8]=[0,8,9]
dic[9]=[9]
N=int(input())
for _ in range(N):
K=list(input())
K=[int(i) for i in K]
lis=getMax(K,dic)
num=''
for i in range(len(lis)):
num+=str(lis[i])
print(int(num))