// Author: @Drydock
use std::io::{self, Read};
fn main() {
solve();
}
fn solve() {
let mut s = String::new();
io::stdin().read_to_string(&mut s).unwrap();
let mut it = I::new(&s);
let t: usize = it.n();
let mut o = String::new();
for _ in 0..t {
let k: u128 = it.n();
let mut l: u128 = 1;
let mut r: u128 = 2_000_000_000;
while l < r {
let m = (l + r) >> 1;
let v = m * (m + 3) / 2;
if v >= k {
r = m;
} else {
l = m + 1;
}
}
let n = l;
let p = (n - 1) * (n + 2) / 2;
if k - p <= n {
o.push('a');
} else {
o.push('b');
}
o.push('\n');
}
print!("{}", o);
}
struct I<'a> {
w: std::str::SplitWhitespace<'a>,
}
impl<'a> I<'a> {
fn new(s: &'a str) -> Self {
Self { w: s.split_whitespace() }
}
fn n<T: std::str::FromStr>(&mut self) -> T {
self.w.next().unwrap().parse().ok().unwrap()
}
}