# うーん、愚直にダイクストラで間に合うのか N = int(input()) edges = [[] for i in range(N+1)] for i in range(1, N+1): num = bin(i).count('1') if i-num >= 1: edges[i].append((i-num, 1)) if i+num <= N: edges[i].append((i+num, 1)) from heapq import heappush, heappop INF = 10 ** 18 def dijkstra(s, n, connect): #(始点, ノード数) distance = [INF] * n que = [(0, s)] #(distance, node) distance[s] = 0 confirmed = [False] * n # ノードが確定済みかどうか while que: w,v = heappop(que) if distance[v]= INF: print(-1) else: print(ans)