import sys input = sys.stdin.readline from collections import deque N=int(input()) DP=[1<<30]*(N+1) DP[0]=0 sq=round(N**(1/2))+2 for i in range(N+1): for j in range(1,sq): if i+j*j>N: break if DP[i+j*j]>=DP[i]+j: DP[i+j*j]=DP[i]+j ANS=[] now=N while now>0: MIN=1<<30 ind=-1 for j in range(1,sq,2): if now-j*j<0: break if DP[now]==DP[now-j*j]+j: ind=j break if ind!=-1: ANS.append(ind) now-=ind*ind continue for j in range(sq//2*2,0,-2): if now-j*j<0: continue if DP[now]==DP[now-j*j]+j: ind=j break if ind!=-1: ANS.append(ind) now-=ind*ind E=[] O=[] for ans in ANS: if ans%2==0: E.append(ans) else: O.append(ans) O.sort() E.sort() LANS=[] for x in O: S=[0] while len(S)