#include using namespace std; typedef signed long long ll; #define _P(...) (void)printf(__VA_ARGS__) #define FOR(x,to) for(x=0;x<(to);x++) #define FORR(x,arr) for(auto& x:arr) #define FORR2(x,y,arr) for(auto& [x,y]:arr) #define ALL(a) (a.begin()),(a.end()) #define ZERO(a) memset(a,0,sizeof(a)) #define MINUS(a) memset(a,0xff,sizeof(a)) template bool chmax(T &a, const T &b) { if(a bool chmin(T &a, const T &b) { if(a>b){a=b;return 1;}return 0;} //------------------------------------------------------- int T,N; ll p10[13]; pair from[12][10]; int num[12][10]; int cand[100]; void solve() { int i,j,k,l,r,x,y; string s; FOR(x,100) cand[x]=1010; FOR(x,10) FOR(y,10) if(x+y<10&&x*8+y<100) { cand[x*8+y]=min(cand[x*8+y],x+y); } p10[0]=1; FOR(i,12) p10[i+1]=p10[i]*10; cin>>T; while(T--) { cin>>N; N=81181819-N; MINUS(from); FOR(x,11) FOR(y,10) num[x][y]=100; num[0][0]=from[0][0].first=0; FOR(i,10) { ll lef=N/p10[i]; FOR(j,10) if(from[i][j].first!=-1) { FOR(x,100) if(cand[x]<10) { y=x+j; if(y>lef||y>=100) continue; if(y%10!=lef%10) continue; int ca=y/10; if(num[i+1][ca]>max(num[i][j],cand[x])) { num[i+1][ca]=max(num[i][j],cand[x]); from[i+1][ca]={x,j}; } } } } ll ret[10]={}; x=num[10][0]; int ca=0; for(i=10;i>=1;i--) { int num=from[i][ca].first; ca=from[i][ca].second; FOR(j,10) { if(num>=8) ret[j]+=p10[i-1]*8, num-=8; else if(num) ret[j]+=p10[i-1], num-=1; } } cout<