;要素と"リストのリスト"を掛け合わせる関数
(define (e-l ele lislis)
  (if (null? lislis) '()
      (cons (cons ele (car lislis)) (e-l ele (cdr lislis)))))
 
;リストと"リストのリスト"を掛け合わせる関数
(define (multi-list listA listB)
  (if (null? listA) '()
      (append (e-l (car listA) listB) (multi-list (cdr listA) listB))))
 
;サブ用の関数
(define (p-list count base ans)
  (if (= count 0) ans
      (p-list (- count 1) base (multi-list base ans))))
 
(define (p-generate count list)
  (p-list count list '(())))

(define (hyojun-list seed sabun)
  (define (list-generate nownum sabun-list)
      (if (null? sabun-list) '()
          (let ((nextnum (+ nownum (car sabun-list))))
          (cons nextnum (list-generate nextnum (cdr sabun-list))))))
  (cons seed (list-generate seed sabun)))

(define (string-make list)
  (define (int->char intlist)
    (if (null? intlist) intlist
        (cons (integer->char (car intlist)) (int->char (cdr intlist)))))
  (list->string (int->char list)))

(define (solve sabuns)
  (if (null? sabuns) "Finish!"
      (begin
        (display (string-make (hyojun-list 97 (car sabuns))))
        (newline)
        (solve (cdr sabuns)))))

(let ((n (read)))
  (if (= n 1) (begin (display "a") (newline))
      (solve (p-generate (- n 1) '(0 1)))))