#!/usr/bin/python3 def prvociselny_rozklad(n): m = n p = 2 rozklad = [] # Zkoušíme čísla do sqrt(m) while p**2 <= m: k = 0 # Opakovaný test dělitelnosti while m % p == 0: m //= p k += 1 if k > 1: rozklad.append(f'{p}^{k}') elif k == 1: rozklad.append(f'{p}') p += 1 # Došli nám dělitelé, m může být prvočíslo if m > 1: rozklad.append(f'{m}') return "*".join(rozklad) radku = int(input()) for _ in range(radku): n = int(input()) print(prvociselny_rozklad(n))