#nullable enable #region var (_input, _iter) = (Array.Empty(), 0); T I() where T : IParsable { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Trim().Split(' '), 0); return T.Parse(_input[_iter++], null); } #endregion static bool J(int x) { var s = x.ToString(); var l = s.Length; for (var i = 0; i < l - 2; i++) { var n0 = s[l - 1 - i] - '0'; var n1 = s[l - 1 - (i + 1)] - '0'; var n2 = s[l - 1 - (i + 2)] - '0'; if (n2 > n1 + n0) return true; } return false; } var sd = new int[200]; sd.AsSpan().Fill(-1); for (var i = 0; i < 100000; i++) { if (!J(i)) continue; var s = i.ToString().Select(e => e - '0').Sum(); if (sd[s] < 0) sd[s] = i; } var v = new int[]{ 0, 604, 605, 705, 706, 806, 807, 907, 908, 5049 }; var ans = new List(); var t = I(); while (t-- > 0) { var k = I(); if (k < sd.Length && sd[k] >= 0) { ans.Add(sd[k].ToString()); continue; } var (p, q) = int.DivRem(k, 9); if (q == 0) (p, q) = (p - 1, 9); var cz = new List(){ v[q].ToString() }; for (var i = 1; i < p - 1; i++) cz.Add("9"); ans.Add(string.Join("", cz)); } Console.WriteLine(string.Join(Environment.NewLine, ans));