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
87
88
89
#include <iostream>
#include<set>

using namespace std;
set<pair<long long,long long>> kol;
set<pair<long long,long long>> kol2;
void merge(){
    auto z=kol.begin(),z2=z;
    z2++;
    pair<long long,long long> pom;
    while(z2!=kol.end()){
        pom.first=z->first;
        pom.second=z->second;
        
        //cout<<pom.first<<' '<<pom.second<<endl;
        while(z->second==z2->first-1&&z2!=kol.end()){
            z++;
            z2++;
            pom.second=z->second;
          //  
           
            
        }

        kol2.insert(pom);
        if(z2==kol.end()){
            z2=z;
            z--;
           
           
        }
        z++;
        z2++;
        if(pom.second!=z->second&&z2==kol.end()){
            kol2.insert(*z);
        }
       

    }
    


}
int main(){
    long long n,m,s,a,b;
    cin>>n>>m>>s;

    for(int i=0;i<m;i++){
        cin>>a>>b;
        kol.insert({a,b});
    }
    merge();
  
    auto z=kol2.upper_bound({s,s});
  
    if(z==kol2.end()){
        z=prev(z);
        
    }
    else if(z->first>s&&z!=kol2.begin()){
        z--;
       
    }
    else if(z->second<s&&z!=kol2.begin()){
        z++;
    }
    
    // /cout<<z->first<<' '<<z->second;
    



    if(z->first-1<1){
        cout<<z->second+1;
    }
    else if(z->second+1>n){
        cout<<z->first-1;
    }
    else if(s-z->first<=z->second-s){
        cout<<z->first-1;
    }
    else{
        cout<<z->second+1;
    }
   // cout<<z->first<<' '<<z->second;



}