#include #include #include using namespace std; using ll = long long; int main(){ int t; cin >> t; while(t--){ ll p; cin >> p; p=81181819-p; vectorx(8); for(int i=0;i<8;i++){ x[7-i]=p%10; p/=10; } vector>dp(9,vector(10,100)); vector>prev(9,vector(10,-1)); dp[0][0]=0; for(int i=0;i<8;i++){ for(int j=0;j<10;j++) for(int k=0;k<10;k++){ int cur=j*10+x[i]-k; if(cur<0)continue; int cnt=cur/8+cur%8; int nx=max(dp[i][j],cnt); if(dp[i+1][k]>nx){ dp[i+1][k]=nx; prev[i+1][k]=j; } } } cout << dp[8][0] << endl; int b=0; vectorrem; for(int i=8;i>0;i--){ rem.push_back(b); b=prev[i][b]; } reverse(rem.begin(),rem.end()); vectorans(8); for(int i=0;i<8;i++){ if(i!=0)ans[i]=rem[i-1]*10+x[i]-rem[i]; else ans[i]=x[i]-rem[i]; } vector out; while(true){ out.push_back(""); for(int i=0;i<8;i++){ if(ans[i]>=8){ out.back().push_back('8'); ans[i]-=8; }else if(ans[i]>=1){ out.back().push_back('1'); ans[i]-=1; }else{ out.back().push_back('0'); } } bool ok=true; for(int i=0;i<8;i++)if(ans[i]!=0)ok=false; if(ok)break; } for(string &s:out){ while(s[0]=='0')s.erase(s.begin()); cout << s << endl; } } return 0; }