Hash Code Hacker

The program prints k distinct letter strings that share one Java hash code by mapping binary digits to Aa and BB blocks.

Easy2StringImplementationNo attempts yetTime limit2sMemory limit256 MB

Problem

According to the Java standard library documentation, the hash code of a string is computed as

s[0]×31n1+s[1]×31n2++s[n1]s[0] \times 31^{n-1} + s[1] \times 31^{n-2} + \cdots + s[n-1]

where s[i]s[i] is the ii-th character of the string and nn is the length of the string. The computation uses signed 32-bit two's complement integers, so an overflow keeps only the low 32 bits.

Heather wants to attack the servers of a company. The attack needs kk distinct query strings whose hash codes are all equal. The servers accept query strings made of uppercase and lowercase English letters only.

Write a program that builds such query strings for Heather.

Input

The single line contains the number of query strings to build, kk (2k10002 \le k \le 1000).

Output

Print kk query strings, one per line. Each query string is non-empty, has length at most 1000, and consists of uppercase and lowercase English letters only. The kk strings are pairwise distinct and their hash codes are all equal.

Many answers satisfy those conditions, so this version fixes one of them for judging. Let mm be the smallest non-negative integer with 2mk2^m \ge k. For each i=0,1,,k1i = 0, 1, \ldots, k-1, write ii in binary using exactly mm digits with leading zeros, then replace every digit 0 with Aa and every digit 1 with BB. Print the resulting strings in increasing order of ii.

In the hash computation of a two character block, Aa and BB both give the value 21122112, so the kk strings built by this rule share the same length 2m2m and the same hash code. Since k1000k \le 1000, we have m10m \le 10 and the length never exceeds 20.