## https://yukicoder.me/problems/no/2740 import heapq def main(): N = int(input()) P = list(map(int, input().split())) # 双方向リスト準備 p_map = {} for i in range(N): node = { "value": P[i], "prev" : None, "next": None } p_map[P[i]] = node if i > 0: p1 = P[i - 1] p_node = p_map[p1] p_node["next"] = node node["prev"] = p_node queue = [] for i in range(N - 1): p1 = P[i] p2 = P[i + 1] heapq.heappush(queue, (p1, p2)) used = [False] * N answer = [] while len(queue) > 0: p1, p2 = heapq.heappop(queue) if not used[p1 - 1] and not used[p2 - 1]: answer.append(p1) answer.append(p2) used[p1 - 1] = True used[p2 - 1] = True p_node = p_map[p1]["prev"] n_node = p_map[p2]["next"] if p_node is not None: p_node["next"] = n_node if n_node is not None: n_node["prev"] = p_node if p_node is not None and n_node is not None: heapq.heappush(queue, (p_node["value"], n_node["value"])) print(" ".join(map(str, answer))) if __name__ == "__main__": main()