#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[50]; sd.AsSpan().Fill(-1); for (var i = 0; i < 1000000; i++) { if (!J(i)) continue; var s = i.ToString().Select(e => e - '0').Sum(); if (sd[s] < 0) sd[s] = i; } 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); var cz = new List(){ sd[q + 18].ToString() }; while (p-- > 2) cz.Add("9"); ans.Add(string.Join("", cz)); } Console.WriteLine(string.Join(Environment.NewLine, ans));