# 动态规划 博弈论
# 1.预处理质数数组 再提取出质数数组
# 2.动态规划状态转移 dp数组
# 3.输出质数结果
n=int(input())
chai=[] #存储柴的长度
for i in range(n):
x=int(input())
chai.append(x)
# 预处理质数数组
# 埃氏筛法 把非质数筛选出来,标记修改为0
max_chai=max(chai) # 找到长度最长的柴 构造小于该长度的质数数组
is_primes=[0,0]+[1]*(max_chai-1) # 初始化质数列表 前两个位置0 1都不是质数
for i in range(2,int(max_chai**0.5)+1): # 筛选非质数,(根号N)+1
if is_primes[i]: # 当前是质数,开始操作
for j in range(i*i,max_chai+1,i): # 从i*i开始,步长为i 选中修改为0
is_primes[j]=0
primes=[]
for i,val in enumerate(is_primes):
if val==1: # 是质数
primes.append(i)
# 处理dp[i]数组
dp=[0]*(max_chai+1)
for i in range(2,max_chai+1):
for p in primes: # 遍历质数列表
if p>i: # 遍历小于等于当前木柴长度的质数
break
if not dp[i-p]: # 当前为必败态
dp[i]=1 # 上一步为必胜态
break
# 收集结果
res=[]
for i in chai:
if dp[i]==0:
res.append(0)
else:
res.append(1)
for i in res:
print(i)