Chef recently learned about concept of periodicity of strings. A string is said to have a period P, if P divides N and for each i, the i-th of character of the string is same as i-Pth character (provided it exists), e.g. "abab" has a period P = 2, It also has a period of P = 4, but it doesn't have a period of 1 or 3.
Chef wants to construct a string of length N that is a palindrome and has a period P. It's guaranteed that N is divisible by P. This string can only contain character 'a' or 'b'. Chef doesn't like the strings that contain all a's or all b's.
Given the values of N, P, can you construct one such palindromic string that Chef likes? If it's impossible to do so, output "impossible" (without quotes)

-----Input-----
The first line of the input contains an integer T denoting the number of test cases.
The only line of each test case contains two space separated integers N, P.

-----Output-----
For each test case, output a single line containing the answer of the problem, i.e. the valid string if it exists otherwise "impossible"  (without quotes). If there are more than possible answers, you can output any.

-----Constraints-----
- 1 ≤ T ≤ 20
- 1 ≤ P, N ≤ 105

-----Subtasks-----
- Subtask #1 (25 points) : P = N
- Subtask #2 (75 points) : No additional constraints

-----Example-----
Input
5
3 1
2 2
3 3
4 4
6 3

Output
impossible
impossible
aba
abba
abaaba

-----Explanation-----
Example 1: The only strings possible are either aaa or bbb, which Chef doesn't like. So, the answer is impossible.
Example 2: There are four possible strings, aa, ab, ba, bb. Only aa and bb are palindromic, but Chef doesn't like these strings. Hence, the answer is impossible.
Example 4: The string abba is a palindrome and has a period of 4.
Example 5: The string abaaba is a palindrome and has a period of length 3.

Starter code:

Solutions:
T=int(input())
for i in range(T):
  n,m=list(map(int,input().split()))
  if(m<=2):
    print("impossible")
  else:
    l=[0]*m

    if(m%2==0):
      a=m//2
    else:
      a=(m//2)+1
    for j in range(a):
      if(j%2==0):
        l[j]="a"
        l[m-j-1]="a"
        
      else:
        l[j]="b"
        l[m-j-1]="b"
        
    
    r=""
    s=n//m
    for e in l:
      r=r+e
    print(r*s)
    
    



T=int(input())
for i in range(T):
  n,m=list(map(int,input().split()))
  if(m<=2):
    print("impossible")
  else:
    l=[0]*m

    if(m%2==0):
      a=m//2
    else:
      a=(m//2)+1
    for j in range(a):
      if(j%2==0):
        l[j]="a"
        l[m-j-1]="a"
        
      else:
        l[j]="b"
        l[m-j-1]="b"
        
    
    r=""
    s=n//m
    for e in l:
      r=r+e
    print(r*s)
    
    



t = int(input())
for i in range(t):
 n, p= list(map(int, input().split()))
 if p == 1 or p == 2:
  print('impossible')
 else:
  s = ''
  if p%2 == 0:
   s = 'a' + 'b'*(p-2) + 'a'
   s = s*(n//p)
  else:
   s = 'a'*(p//2) + 'b' + 'a'*(p//2)
   s = s*(n//p)
  print(s)


for _ in range(int(input())):
 n,p=list(map(int,input().split()))

 a=[]
 ans=0

 if n%p!=0 or p==1 or p==2:
  ans+=1

 if n==p:
  a=['a']*n

  if n%2==0:
   a[n//2]='b'
   a[n//2-1]='b'
  else:
   a[n//2]='b'

 else:
  if p%3==0:
   k=n//3
   for i in range(k):
    a.append('aba')

  elif p%4==0:
   k=n//4
   for i in range(k):
    a.append('abba')

  else:
   a=['a']*n

   if p%2==0:
    for i in range(n//p):
     a[p//2+i*p]='b'
     a[p//2+i*p-1]='b'

   else:
    for i in range(n//p):
     a[p//2+i*p]='b'
   

 if ans>0:
  print('impossible')
 else:
  print(''.join(a))
 





for _ in range(int(input())):
 n,p=map(int,input().split())
 if p>=n:
  if n==1 or n==2:
   print('impossible')
  else:
   print('a'+'b'*(n-2)+'a')
 else:
  if n%p!=0:
   print('impossible')
  else:
   if p==1 or p==2:
    print('impossible')
   else:
    s='a'+'b'*(p-2)+'a'
    print(s*(n//p))

t = int(input())
while(t>0):
 t-=1
 n,p = [int(x) for x in input().split()]
 if(p <= 2):
  print('impossible')
  continue
 else:
  s = 'a' + ('b'*(p-2)) + 'a'
  s = s*int(n/p)
  print(s)