#!/usr/bin/env python3 from collections import Counter def solve(): p = int(input()) w = input().split() res = do_solve(w) if res is None: return 'IMPOSSIBLE' return f'POSSIBLE\n{" ".join(res)}' def do_solve(w): last = ''.join(sorted(w[0])) res = [last] for letters in w[1:]: nw = make_word(last, letters) if nw is None: return None res.append(nw) last = nw return res def make_word(prev, letters): letters = Counter(letters) sb = [] backup = None for c in prev: nc = min((k for k, v in letters.items() if v > 0 and k > c), default=None) if nc is not None: bl = dict(letters) bl[nc] -= 1 backup = [*sb, nc], bl if letters.get(c, 0) > 0: sb.append(c) letters[c] -= 1 else: if backup is None: return None sb, letters = backup break sb.extend(sorted(k * v for k, v in letters.items())) return ''.join(sb) if __name__ == '__main__': t = int(input()) for i in range(t): print(f'Case #{i + 1}: {solve()}')