#include using namespace std; const int MAX_N = 500; string findLowest(int n, int digitSum) { string s(""); for (int i = 0; i < n; i++) { if (digitSum > 9) { s = '9' + s; digitSum -= 9; } else { s = char(digitSum + '0') + s; digitSum = 0; } } return s; } string last(int n, int digitSum) { for (int i = 1; i < 10 && i <= digitSum; i++) { if (digitSum - i <= (n - 1) * 9) { return char(i + '0') + findLowest(n - 1, digitSum - 1); } } } string solve(string s, int digitSum) { int len = s.size(); for (int i = len - 1; i >= 0; i--) { int currSum = 0; string newS(""); for (int j = 0; j < i; j++) { currSum += s[j] - '0'; newS += s[j]; } for (int j = s[i] - '0' + 1; j < 10; j++) { if ((len - i - 1) * 9 >= digitSum - currSum - j && digitSum >= currSum + j) { newS += char(j + '0'); newS += findLowest(len - i - 1, digitSum - currSum - j); return newS; } } } while (len++) { if(len * 9 >= digitSum){ return last(len, digitSum); } } } int main() { freopen("sequence.in","r",stdin); freopen("sequence.out","w",stdout); int n, b; cin >> n; string s = "0"; for (int i = 0; i < n; i++) { cin >> b; s = solve(s, b); cout << s << endl; } return 0; }