1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import sys
import bisect

def main():
    input = sys.stdin.readline

    n, m, s = map(int, input().split())
    intervals = []
    for _ in range(m):
        l, r = map(int, input().split())
        intervals.append((l, r))

    intervals.sort()

    starts = [l for l, r in intervals]
    ends = [r for l, r in intervals]

    def is_occupied(x):
        idx = bisect.bisect_right(starts, x) - 1
        if idx >= 0 and starts[idx] <= x <= ends[idx]:
            return True
        return False

    for d in range(0, max(s - 1, n - s) + 1):
        for candidate in [s - d, s + d]:
            if 1 <= candidate <= n and not is_occupied(candidate):
                print(candidate)
                return

if __name__ == "__main__":
    main()