import sys input = lambda : sys.stdin.readline().rstrip() sys.setrecursionlimit(2*10**5+10) write = lambda x: sys.stdout.write(x+"\n") debug = lambda x: sys.stderr.write(x+"\n") writef = lambda x: print("{:.12f}".format(x)) from math import gcd import random def is_prime(n): """miller_rabinによる素数判定 ※ 1は素数と扱う """ l = [2,3,5,7,11,13,17,19,23,29,31,37] if n==1 or n in l: return True d = n-1 s = 0 while d%2==0: s += 1 d //= 2 for a in l: v = pow(a,d,n) if v==1 or v==n-1: continue for _ in range(s): v = v*v % n if v==n-1: break else: return False return True n = int(input()) for i in range(n): v = int(input()) if is_prime(v) and v!=1: print(v,1) else: print(v,0)