def main(): N = int(input()) M = int(N ** 0.5) + 2 temp = [] minv = 10 ** 18 # for a in range(1, M): # A = a * a # if A > N: # break # if A == N: # if a == minv: # temp.append([a]) # elif a < minv: # temp = [[a]] # for a in range(1, M): # A = a * a # if A > N: # break # for b in range(a, M): # B = b * b # if A + B > N: # break # if A + B == N: # if a + b == minv: # temp.append([a, b]) # elif a + b < minv: # temp = [[a, b]] # for a in range(1, M): # A = a * a # if A > N: # break # for b in range(a, M): # B = b * b # if A + B > N: # break # for c in range(b, M): # C = c * c # if A + B + C > N: # break # if A + B + C== N: # if a + b + c == minv: # temp.append([a, b, c]) # elif a + b + c < minv: # temp = [[a, b, c]] for a in range(1, M): A = a * a if A > N or a > minv: break if A == N: if a == minv: temp.append([a]) elif a < minv: temp = [[a]] minv = a break for b in range(a, M): B = b * b if A + B > N or a + b > minv: break if A + B == N: if a + b == minv: temp.append([a, b]) elif a + b < minv: temp = [[a, b]] minv = a + b break for c in range(b, M): C = c * c if A + B + C > N or a + b + c > minv: break if A + B + C== N: if a + b + c == minv: temp.append([a, b, c]) elif a + b + c < minv: temp = [[a, b, c]] minv = a + b + c break for d in range(c, M): D = d * d if A + B + C + D > N or a + b + c + d > minv: break if A + B + C + D == N: if a + b + c + d == minv: temp.append([a, b, c, d]) elif a + b + c + d < minv: temp = [[a, b, c, d]] minv = a + b + c + d break def f(t): L = [None] * len(t) for i in range(len(t)): L[i] = (-(t[i]%2), t[i] * (-1) ** int(t[i]%2 == 0)) L.sort() lst = [] now = 0 for _, a in L: a = abs(a) for i in range(a): lst.append(str(now)) now = 1 - now now = 1 - now return "".join(lst) ans = None for t in temp: if ans is None: ans = f(t) else: ans = min(ans, f(t)) print(ans) main()