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
#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define fi first
#define sn second

typedef long long ll;
typedef vector<int> VI;
typedef vector<char> VC;
typedef pair<ll, ll> PI;

const ll INF = 1e14;

ll get_right(vector<PI> &A, int i) {
  if (i >= A.size()) return INF;

  return A[i].fi - 1;
}

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

  vector<PI> A(m);
  for (int i = 0; i < m; i++) {
    cin >> A[i].fi >> A[i].sn;
  }

  sort(A.begin(), A.end());

  ll sol = -INF;
  ll d_sol = INF;

  ll rightmost = 0;

  for (int i = 0; i < m; i++) {
    if (A[i].fi == rightmost + 1) {
      rightmost = A[i].sn;
      continue;
    }

    ll left = rightmost + 1;
    ll right = get_right(A, i);

    ll d_left = abs(left - s);
    ll d_right = abs(right - s);

    if (d_left < d_sol) {
      d_sol = d_left;
      sol = left;
    }

    if (d_right < d_sol) {
      d_sol = d_right;
      sol = right;
    }

    rightmost = A[i].sn;
  }

  if (A[m - 1].sn < n) {
    ll left = A[m - 1].sn + 1;
    ll d_left = abs(left - s);

    if (d_left < d_sol) {
      d_sol = d_left;
      sol = left;
    }
  }

  cout << sol << endl;
  return 0;
}