#JavaScript (ES6), 43 bytes Returns the sequence as a comma-separated string. <!-- language-all: lang-javascript --> f=(n=98)=>n?f(n-=n-27?n%10?1:2:11)+[,n+3]:1 [Try it online!][TIO-jmrskxwz] [JavaScript (Node.js)]: https://nodejs.org [TIO-jmrskxwz]: https://tio.run/##BcFBCoAgEADA1wSKGa0dKsF8SHQQ0yhkNzL6/jZzhS/U@Jz3q5H2xJydQDdP0i3os0DtUJvRYwO9B2ssgFRri2rYLHAkrFRSV@gQWUjJPw "JavaScript (Node.js) – Try It Online" ###Commented f = // f is a recursive function taking: (n = 98) => // n = counter, initialized to 98 n ? // if n is not equal to 0: f( // prepend the result of a recursive call: n -= // update n: n - 27 ? // if n is not equal to 27: n % 10 ? // if n is not a multiple of 10: 1 // subtract 1 from n : // else: 2 // subtract 2 from n : // else (n = 27): 11 // subtract 11 from n (--> 16) ) + // end of recursive call [, n + 3] // append a comma, followed by n + 3; notice that this is the value // of n *after* it was updated for the recursive call; at the first // iteration, we have: n = 98 -> updated to 97 -> n + 3 = 100 : // else (n = 0): 1 // output the first term '1' and stop recursion