from collections import Counter import string def defeat(prev: str, token: str): "min sort of token beating prev, or None" ctr = Counter(token) best = None for n_shared in range(len(prev)): pool = [c for c, v in ctr.items() if c > prev[n_shared] and v > 0] if pool: c = min(pool) ctr[c] -= 1 best = prev[:n_shared] + c + ''.join(sorted([c * v for c, v in ctr.items()])) ctr[c] += 1 # end if ctr[prev[n_shared]] > 0: ctr[prev[n_shared]] -= 1 else: return best # share all best = prev + ''.join(sorted([c*v for c, v in ctr.items()])) return best def solve(tokens): ret = [] for token in tokens: prev = ret[-1] if ret else "" res = defeat(prev, token) if res is None: return None ret.append(res) return ret def solve2(s): for i in range(1, len(s)): t = [s[:i], s[i:]] if not solve(t): return t return None def solve3(s): for i in range(1, len(s)): for j in range(i + 1, len(s)): t = [s[:i], s[i:j], s[j:]] if not solve(t): return t return None tcn = int(input()) for tc in range(1, tcn+1): p_s, s = input().split() p = int(p_s) if p == 2: t = solve2(s) elif p == 3: t = solve3(s) verdict = "IMPOSSIBLE" if t is None else "POSSIBLE" print("Case #{}: {}".format(tc, verdict)) if t is not None: print(*t)