#![allow(non_snake_case)]

use std::io::{stdin, Read};
use std::str::FromStr;
fn read_option<T: FromStr>() -> Option<T> {
    let stdin = stdin();
    let stdin = stdin.lock();
    let token: String = stdin
        .bytes()
        .map(|c| c.expect("failed to read char") as char)
        .skip_while(|c| c.is_whitespace())
        .take_while(|c| !c.is_whitespace())
        .collect();
    token.parse().ok()
}
fn read<T: FromStr>() -> T {
    let opt = read_option();
    opt.expect("failed to parse token")
}

fn main() {
    let N: usize = read();
    for i in 0..N {
        // a をN - i回、bをi回
        println!(
            "{}",
            (0..(N - i)).map({ |_| "a" }).collect::<Vec<_>>().concat()
                + &(0..(i)).map({ |_| "b" }).collect::<Vec<_>>().concat()
        );
    }
}
