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
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ft first
#define sc second
#define elif else if
const int sizen = 2e6+1112;
int A,B,N,M,lewy,prawy,S; 
vector<pair<int,int>>prawe;
vector<pair<int,int>>lewe;
void solve()
{
	for (int i = prawe.size()-1; i >= 0 ; i--)
	{
		if (prawe[i].sc >= prawy && prawe[i].ft <= prawy)
		{
			prawy = prawe[i].ft - 1 ; 
		}
	}
	for (int i = 0; i < lewe.size() ; i++)
	{
		if (lewe[i].ft <= lewy && lewe[i].sc >= lewy)
		{
			lewy = lewe[i].sc + 1 ; 
		}
	}
}
void pre()
{
	prawy = S-1; lewy = S+1 ; 
	for (int i =1 ; i <= M ; i ++)
	{
		cin >> A >> B  ;
		if (A <= S && B <= S)
		{
			prawe.push_back({A,B});
		}
		elif (A <= S && B > S)
		{
			prawe.push_back({A,S});
			lewe.push_back({S,B});
		}
		elif (A > S && B > S)
		{
			lewe.push_back({A,B});
		}
	}
	sort(prawe.begin(),prawe.end());
	sort(lewe.begin(),lewe.end());
}
int32_t main()
{
	ios::sync_with_stdio(NULL);
	cin.tie(NULL);
	cin >> N >> M >> S;
	pre();
	solve();
	if(S-prawy <= lewy-S && prawy >= 1 )
	{
		cout << prawy ;
	}
	elif(lewy <= N)
	{
		cout << lewy;
	}
	elif (1)
	{
		cout << prawy;
	}
}