a035516_row n = h : t where
  h = last $ takeWhile (<= toInteger n) a000045_list
  t = if n == h then [] else a035516_row (n - h)
a035516_row n = h : t where
  h = last $ takeWhile (<= toInteger n) a000045_list
  t = if n == h then [] else a035516_row (n - h)
a035516_row n = h : t where
  h = last $ takeWhile (<= toInteger n) a000045_list
  t = if n == h then [] else a035516_row (n - h)