I don't understand how the run n (x) g0 g1 ... to run through listo
the listo is defined like this
(define listo
  (lambda (l)
    (conde
      [(nullo l) #s)]
      [(pairo l)
       (fresh (d)
         (cdro l d)
         (listo d))]
      [else #u])))
The Reasoned Schemer on page 29 in segment 14 says the code
(run 5 (x)
  (listo (a b c . x)))
produces the result
(()
 (_.0)
 (_.0 _.1)
 (_.0 _.1 _.2)
 (_.0 _.1 _.2 _.3))
Would you explain how does this happened ? Thank you in advance.