import math def main(): import sys N = int(sys.stdin.readline()) if N == 0: print("") return INF = float('inf') dp = [INF] * (N + 1) dp[0] = 0 prev = [0] * (N + 1) # To track the previous j used for each i for i in range(1, N + 1): max_j = int(math.sqrt(i)) for j in range(1, max_j + 1): if i - j * j >= 0 and dp[i] > dp[i - j * j] + j: dp[i] = dp[i - j * j] + j prev[i] = j # Reconstruct the parts current = N parts = [] while current > 0: j = prev[current] parts.append(j) current -= j * j # Build the binary string result = [] current_char = '0' for length in parts: segment = [] for i in range(length): if i % 2 == 0: segment.append(current_char) else: segment.append('1' if current_char == '0' else '0') result.append(''.join(segment)) current_char = segment[-1] print(''.join(result)) if __name__ == "__main__": main()