from collections import * from itertools import * from functools import cache, partial from pprint import pprint import sys from typing import Any, Final try: from icecream import ic except ImportError: # Graceful fallback if IceCream isn't installed. ic = lambda *a: None if not a else (a[0] if len(a) == 1 else a) # noqa debug = partial(print, file=sys.stderr) dpprint = partial(pprint, stream=sys.stderr) sys.setrecursionlimit(10**6) MOD = 998244353 N: Final = int(input()) A: Final[list[int]] = sorted(map(int, input().split())) B: Final[list[int]] = sorted(map(int, input().split())) # ic(N) # ic(A) # ic(B) # left_acc[i] := 左から i 番目までの abs(Ai - Bi) の累積和 left_acc = [0] for a, b in zip(A, B): if len(left_acc) == 0: left_acc.append(abs(a - b)) else: left_acc.append(left_acc[-1] + abs(a - b)) # ic(left_acc) A_ = A[::-1] B_ = B[::-1] # right_acc[i] := 右から i 番目までの abs(Ai - Bi) の累積和 right_acc = [0] for a, b in zip(A_, B_): if len(right_acc) == 0: right_acc.append(abs(a - b)) else: right_acc.append(right_acc[-1] + abs(a - b)) right_acc = right_acc[::-1] # ic(right_acc) # 左から i 番目の A[i] を B と合わせなかった時のコスト cost = [0] * N for i in range(N): # ic(i) cost[i] = left_acc[i] + right_acc[i] # ic(cost) min_cost = min(cost) S = set([]) for c, a in zip(cost, A): if c == min_cost: S.add(a) # ic(S) print(len(S)) print(*sorted(S))