#yukicoder394B #xN or y>z+3: break for i in range(3): if y*z N: break elif y*z==N: if y>z: break else: A.add((0,y,z)) #x>0 の場合 for x in range(1,N+1): for y in range(x,N+1): if 3*x*y>N: break z=(N-x*y)//(y+x)-1 if x*y+y*z+z*x>N or y>z+3: break for i in range(3): if x*y+y*z+z*x N: break elif x*y+y*z+z*x==N: if y>z: break else: A.add((x,y,z)) Ans=[] for x,y,z in A: if x==y==z: Ans.append((x,y,z)) elif x==y or y==z: Ans.append((x,y,z)); Ans.append((y,z,x)); Ans.append((z,x,y)) else: Ans.append((x,y,z)); Ans.append((x,z,y)); Ans.append((y,x,z)) Ans.append((y,z,x)); Ans.append((z,x,y)); Ans.append((z,y,x)) print(len(Ans)) for x,y,z in Ans: print(x,y,z)