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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#pragma GCC optimize("O3,unroll-loops")
#include <bits/stdc++.h>
#define fi first
#define se second
#define pn printf("\n")
#define ssize(x) int(x.size())
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define bitcount(x) __builtin_popcount(x)
#define bitcountll(x) __builtin_popcountll(x)
#define clz(x) __builtin_clz(x)
#define ctz(x) __builtin_ctz(x)
#define eb emplace_back
//~ #define r(x) resize(x)
//~ #define rf(x, c) resize(x, c)
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<int, ll> pil;
typedef pair<ll, int> pli;
typedef pair<ll, ll> pll;
typedef double db;
typedef long double ldb;
#define V vector
//~ void read(int &a){
		//~ a = 0; char c = _getchar_nolock();
		//~ while(c<'0'||'9'<c) c = _getchar_nolock();
		//~ while('0'<=c&&c<='9') a = a*10+c-'0', c = _getchar_nolock();
//~ }
// random_device rd;
// mt19937 rng(rd());
// uniform_int_distribution<int> mrandint(1, (1<<30)-1);
// uniform_int_distribution<ll> mrandll(1, 1ll<<60);	
// int randint(){ return mrandint(rng); }
// ll randll(){ return mrandll(rng); }
int inf = 2.1e09; ll infll = 2e18; int mod = (1<<23)*119+1; //1e09+7;
int add(int a, int b){return a+b >= mod ? a+b - mod : a+b;}
int sub(int a, int b){return a-b < 0 ? a-b + mod : a-b;}
int mul(int a, int b){return int(a * ll(b) % mod);}
int fpow(int a, ll b){
	int ret = 1;
	while(b){
		if(b & 1) ret = mul(ret, a);
		b >>= 1, a = mul(a, a);
	} return ret;
}
int inv(int a){ return fpow(a, mod-2); }
int coeff(int n, int k, vector<int> &fac, vector<int> &invfac){
	if(k < 0 || n < k) return 0;
	return mul(fac[n], mul(invfac[n-k], invfac[k]));
}
void calcfac(int n, vector<int> &fac, vector<int> &invfac){
	fac[0] = 1, invfac[0] = 1;
	for(int i = 1; i <= n; ++i) fac[i] = mul(fac[i-1], i);
	invfac[n] = inv(fac[n]);
	for(int i = n-1; i; --i) invfac[i] = mul(invfac[i+1], i+1);
}
void answer(){
	ll n, s; int m; scanf("%lld%d%lld", &n, &m, &s);
	V<pll> t(m);
	unordered_map<ll, int> mp;
	mp[0] = 1, mp[n+1] = 1;
	for(int i = 0; i < m; ++i){
		scanf("%lld%lld", &t[i].fi, &t[i].se);
		mp[t[i].fi] = 1, mp[t[i].se] = 1;
	}
	ll result = infll, idx = infll;
	for(int i = 0; i < m; ++i){
		if(!mp[t[i].fi-1] && abs(t[i].fi-1-s) < result)
			result = abs(t[i].fi-1-s), idx = t[i].fi-1;
		else if(!mp[t[i].fi-1] && abs(t[i].fi-1-s) == result)
			idx = min(idx, t[i].fi-1);
		if(!mp[t[i].se+1] && abs(t[i].se+1-s) < result)
			result = abs(t[i].se+1-s), idx = t[i].se+1;
		else if(!mp[t[i].se+1] && abs(t[i].se+1-s) == result)
			idx = min(idx, t[i].se+1);
	}
	printf("%lld\n", idx);
}
int main(){
	int T = 1;
	// scanf("%d", &T);
	//ios_base::sync_with_stdio(0); cin.tie(0);// cin >> T;
	for(++T; --T; ) answer();
	return 0;
}