(defun @group (lst)
(labels ((rec (@s not@s lst)
(if (null lst)
(values @s not@s)
(if (char= #\@
(char (symbol-name (car lst))
0))
(rec (append @s
(list (list (first lst)
(second lst))))
not@s
(cddr lst))
(rec @s (append not@s (list (first lst))) (cdr lst))))))
(rec nil nil lst)))
(dolist (lst '((t1 t2 @t3 t4 @t5 t6 @t7 t8 t9) ; test data
(t1 t2 t3)
(@t1 @t2 @t3)
(@t1 '(t2 t3) @t4 '())))
(multiple-value-bind (x y) (@group lst)
(format t "~A~%~A~%~%" x y)))
KGRlZnVuIEBncm91cCAobHN0KQogIChsYWJlbHMgKChyZWMgKEBzIG5vdEBzIGxzdCkgCiAgICAgICAgICAgICAoaWYgKG51bGwgbHN0KQoJCSAodmFsdWVzIEBzIG5vdEBzKQoJCSAoaWYgKGNoYXI9ICNcQCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyIChzeW1ib2wtbmFtZSAoY2FyIGxzdCkpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkpCgkJICAgICAocmVjIChhcHBlbmQgQHMgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCAobGlzdCAoZmlyc3QgbHN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlY29uZCBsc3QpKSkpCgkJICAgICAgICAgIG5vdEBzCgkJCSAgKGNkZHIgbHN0KSkKICAgICAgICAgICAgICAgICAgICAgKHJlYyBAcyAoYXBwZW5kIG5vdEBzIChsaXN0IChmaXJzdCBsc3QpKSkgKGNkciBsc3QpKSkpKSkKICAgIChyZWMgbmlsIG5pbCBsc3QpKSkKCgooZG9saXN0IChsc3QgJygodDEgdDIgQHQzIHQ0IEB0NSB0NiBAdDcgdDggdDkpICAgOyB0ZXN0IGRhdGEKICAgICAgICAgICAgICAgKHQxIHQyIHQzKQogICAgICAgICAgICAgICAoQHQxIEB0MiBAdDMpCiAgICAgICAgICAgICAgIChAdDEgJyh0MiB0MykgQHQ0ICcoKSkpKQogIChtdWx0aXBsZS12YWx1ZS1iaW5kICh4IHkpIChAZ3JvdXAgbHN0KQogICAgKGZvcm1hdCB0ICJ+QX4lfkF+JX4lIiB4IHkpKSk=