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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <bits/stdc++.h>

#define ll long long
#define fors(u, n, s) for(ll u = (s); u < (n); u++)
#define foru(u, n) fors(u, n, 0)
#define f first
#define s second
#define vec vector
#define pb push_back
#define ir(a, b, x) (((a) <= (x)) && ((x) <= (b)))

using namespace std;

vec<pair<ll, ll>> segments;

ll n, s;

int main() {
	cin >> n;
	int m; cin >> m;
	cin >> s;

	foru(_i, m){
		ll x, y; cin >> x >> y;
		segments.pb({x, y});
	}
	
	ll right = s+1;
	ll left = s-1;

	foru(_i, m) foru(i, m){
		auto seg = segments[i];
		if(ir(seg.f, seg.s, right)) right = seg.s+1;
		if(ir(seg.f, seg.s, left)) left = seg.f-1;
	}

	if(left <= 0) {
		cout << right; return 0;
	}
	if(right > n){
		cout << left; return 0;
	}
	if(right-s >= s-left) swap(right, left);
	cout << right;
    return 0;
}