n = int(input()) items = [tuple(map(int, input().split())) for _ in range(n)] half = n // 2 group1 = items[:half] group2 = items[half:] def generate_diffs(items): diffs = {0} for a, b in items: new_diffs = set() for d in diffs: new_diffs.add(d + a) new_diffs.add(d - b) diffs = new_diffs return sorted(diffs) s1 = generate_diffs(group1) s2 = generate_diffs(group2) s2.sort() min_diff = float('inf') for s in s1: target = -s left, right = 0, len(s2) - 1 best = None while left <= right: mid = (left + right) // 2 if s2[mid] == target: best = mid break elif s2[mid] < target: left = mid + 1 else: right = mid - 1 candidates = [] if best is not None: candidates.append(s2[best]) else: if left < len(s2): candidates.append(s2[left]) if right >= 0: candidates.append(s2[right]) for delta in (-1, 0, 1): if 0 <= left + delta < len(s2): candidates.append(s2[left + delta]) if 0 <= right + delta < len(s2): candidates.append(s2[right + delta]) candidates = list(set(candidates)) for c in candidates: current = abs(s + c) if current < min_diff: min_diff = current print(min_diff)