(loop for line = (read-line *standard-input* nil nil)
      while line
      do (let ((S (parse-integer (subseq line 0 (position #\Space line)) :junk-allowed t))
               (L (parse-integer (subseq line (position #\Space line)) :junk-allowed t)))
           (if (and (every #'integerp (list S L))
                    (<= 1 S 10)
                    (<= 1 L 100))
               (progn
                 (format t "~%~D ~D~%" S L)
                 (let ((P #'evenp))
                   (dotimes (z L)
                     (dotimes (y (max 1 (if (evenp L) S (floor (/ L 2)))))
                       (dotimes (x L)
                         (princ (make-string S :initial-element (if (funcall P x) #\o #\x))))
                       (terpri))
                     (setq P (if (eq P #'evenp) #'oddp #'evenp)))))
               (format *error-output* "~&Invalid input: ~A~%" line))))
