(define (recombine left right)
(if (not (null? right))
(let ((tail (cdr right))
(next (cons (car right) left)))
(format #t "~a\n" (string-join
(map number->string next) " "))
(recombine next tail)
(recombine left tail))))
(recombine '() '(1 2 3 4))
KGRlZmluZSAocmVjb21iaW5lIGxlZnQgcmlnaHQpCiAgKGlmIChub3QgKG51bGw/IHJpZ2h0KSkKICAgICAgKGxldCAoKHRhaWwgKGNkciByaWdodCkpCiAgICAgICAgICAgIChuZXh0IChjb25zIChjYXIgcmlnaHQpIGxlZnQpKSkKICAgICAgICAoZm9ybWF0ICN0ICJ+YVxuIiAoc3RyaW5nLWpvaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcCBudW1iZXItPnN0cmluZyBuZXh0KSAiICIpKQogICAgICAgIChyZWNvbWJpbmUgbmV4dCB0YWlsKQogICAgICAgIChyZWNvbWJpbmUgbGVmdCB0YWlsKSkpKQoKKHJlY29tYmluZSAnKCkgJygxIDIgMyA0KSk=