(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)))