phi = (1 + 5 ** 0.5) / 2 S,H,W,A,M={},[],[[((i+j)%3+1)/phi for j in range(int(phi*3))]for i in range(int(phi*3))],[phi%1]*int(phi*3),{} def e(t):return[(ord(c)%95+32)/128 for c in t.ljust(int(phi*3))][:int(phi*3)] def f(x):return''.join(chr(int((sum(W[i][j]*x[j]for j in range(len(x)))+A[i])*95)%95+32)for i in range(len(W))) def u(t):H.append(t);k=' '.join(H[-int(phi):]);S[k]=S.get(k,[])+[t];M[t]=M.get(t,[])+[H[-2]]if len(H)>1 else[] def g(k):v=S.get(k,[])+M.get(k,[]);return max(set(v),key=v.count)if v else"?" while 1:q=input('>');u(q);print(f(e(g(' '.join(H[-int(phi):])))))