import sys # 预处理每个 (a, b) 对应的左、右 c 列表 def precompute(): left_dict = {} right_dict = {} for a in range(1, 10): for b in range(10): if b == a: continue left = [] right = [] for c in range(10): if c == a or c == b: continue if c < b: left.append(c) elif c > b: right.append(c) left.sort() right.sort() left_dict[(a, b)] = left right_dict[(a, b)] = right return left_dict, right_dict def solve() -> None: data = sys.stdin.read().strip().split() if not data: return it = iter(data) T = int(next(it)) left_dict, right_dict = precompute() out = [] for _ in range(T): N = int(next(it)) K = int(next(it)) total_per_a = 72 * N a = (K - 1) // total_per_a + 1 k_in_a = K - (a - 1) * total_per_a per_b = 8 * N r = (k_in_a - 1) // per_b + 1 # b 在 a 组内的序号 (1‑based) if r <= a: b = r - 1 else: b = r k_in_ab = k_in_a - (r - 1) * per_b # 在当前 (a,b) 组内的序号 left = left_dict[(a, b)] right = right_dict[(a, b)] L = len(left) R = len(right) # L + R = 8 恒成立 if k_in_ab <= L * N: # 落在左半部分 (c < b) t = (k_in_ab - 1) // L m = t # m 从 0 开始 idx = (k_in_ab - 1) % L c = left[idx] else: # 落在右半部分 (c > b) k2 = k_in_ab - L * N t = (k2 - 1) // R m = N - 1 - t # m 从大到小 idx = (k2 - 1) % R c = right[idx] length = m + 3 out.append(f"{length} {a} {b} {c}") sys.stdout.write("\n".join(out)) if __name__ == "__main__": solve()