def main(): import sys N, K = map(int, sys.stdin.readline().split()) def compute_rem_max(K): if K == 0: return 0 target = (K + 1) // 2 if target == 0: return 0 low = 0 high = 60 # since 4^60 is way larger than any K up to 1e15 while low < high: mid = (low + high) // 2 if (1 << (2 * mid)) < target: # 4^mid = 2^(2*mid) low = mid + 1 else: high = mid return low rem_max = compute_rem_max(K) level1 = ['y', 'u', 'u', 's', 'a', 'a', 'n'] current_sum = 0 found_char = None current_rem = 0 k_remaining = 0 for idx, c in enumerate(level1): if c in {'u', 'a'}: rem_initial = N - 1 if rem_initial < 0: size = 1 else: if rem_initial < rem_max: size = 2 * (4 ** rem_initial) - 1 if size > K: size = K + 1 else: size = K + 1 else: size = 1 if current_sum + size >= K: found_char = c k_remaining = K - current_sum current_rem = N - 1 if c in {'u', 'a'} else 0 break current_sum += size current_char = found_char current_rem_steps = current_rem while True: if current_rem_steps == 0 or current_char not in {'u', 'a'}: print(current_char) return substitution = ['y', 'u', 'u', 's', 'a', 'a', 'n'] for c_sub in substitution: if c_sub in {'u', 'a'}: rem_sub = current_rem_steps - 1 if rem_sub < 0: size_sub = 1 else: if rem_sub < rem_max: size_sub = 2 * (4 ** rem_sub) - 1 if size_sub > k_remaining: size_sub = k_remaining + 1 else: size_sub = k_remaining + 1 else: size_sub = 1 if k_remaining <= size_sub: current_char = c_sub current_rem_steps = rem_sub if c_sub in {'u', 'a'} else 0 break else: k_remaining -= size_sub if __name__ == "__main__": main()