You are given an integer n. Find any string s of length n consisting only of English lowercase letters such that each non-empty substring of s occurs in s an odd number of times. If there are multiple such strings, output any. It can be shown that such string always exists under the given constraints.

A string a is a substring of a string b if a can be obtained from b by deletion of several (possibly, zero or all) characters from the beginning and several (possibly, zero or all) characters from the end.

Input

The first line contains a single integer t (1 ≤ t ≤ 500) — the number of test cases.

The first line of each test case contains a single integer n (1 ≤ n ≤ 10^5).

It is guaranteed that the sum of n over all test cases doesn't exceed 3 ⋅ 10^5.

Output

For each test case, print a single line containing the string s. If there are multiple such strings, output any. It can be shown that such string always exists under the given constraints.

Example

Input


4
3
5
9
19


Output


abc
diane
bbcaabbba
youarethecutestuwuu

Note

In the first test case, each substring of "abc" occurs exactly once.

In the third test case, each substring of "bbcaabbba" occurs an odd number of times. In particular, "b" occurs 5 times, "a" and "bb" occur 3 times each, and each of the remaining substrings occurs exactly once.
# cook your dish here
import sys
import bisect
from bisect import bisect_left as lb
from bisect import bisect_right as rb
input_=lambda: sys.stdin.readline().strip("\r\n")
from math import log
from math import gcd
from math import atan2,acos
from random import randint
sa=lambda :input_()
sb=lambda:int(input_())
sc=lambda:input_().split()
sd=lambda:list(map(int,input_().split()))
sflo=lambda:list(map(float,input_().split()))
se=lambda:float(input_())
sf=lambda:list(input_())
flsh=lambda: sys.stdout.flush()
#sys.setrecursionlimit(10**6)
mod=10**9+7
mod1=998244353
gp=[]
cost=[]
dp=[]
mx=[]
ans1=[]
ans2=[]
special=[]
specnode=[]
a=0
kthpar=[]
def dfs2(root,par):
    if par!=-1:
        dp[root]=dp[par]+1
    for i in range(1,20):
        if kthpar[root][i-1]!=-1:
            kthpar[root][i]=kthpar[kthpar[root][i-1]][i-1]
    for child in gp[root]:
        if child==par:continue
        kthpar[child][0]=root
        dfs(child,root)
        
ans=0
b=[]
vis=[]
tot=0
time=[]
time1=[]
adj=[]
mx=-1
eps=0.0000001
def dfs(a,b,p,c):
    if a==b:
        return c
    for i,j in adj[a]:
        if i==p:continue
        temp=dfs(i,b,a,c+j)
        if dfs(i,b,a):
            mx=max(i,mx)
            return 1
adj=[]
ans=[]
def dfs(root,par,v):
    global adj,ans,abe
    tot=v
    for child,val in adj[root]:
        if par==child:
            continue
        tot|=dfs(child,root,val)
    ans[root]=tot
    return tot
abe=0
def traverse(root,par):
    global adj,ans,abe
    for child,val in adj[root]:
        if par==child:continue
        if ans[child]==0:
            abe+=1
        else:
            traverse(child,root)
def hnbhai(tc):
    n=sb()
    x=n
    ans=""
    z=ord('z')
    while(x%4!=0):
        ans+=chr(z)
        z-=1
        x-=1
    if x==0:
        print(ans)
        return
    sz=x//4
    ans+="a"*(sz)+"m"+"b"*(sz-1)+"a"*(sz-1)+"n"+"b"*(sz)
    print(ans)
for _ in range(sb()):
    hnbhai(_+1)
