func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T1, typename T2>   inline void chkmin(T1 &x, T2 y) {     if (x > y) x = y;   }   template <typename T1, typename T2>   inline void chkmax(T1 &x, T2 y) {     if (x < y) x = y;   }   inline int readChar();   template <class T = int>   inline T readInt();   template <class T>   inline void writeInt(T x, char end = 0);   inline void writeChar(int x);   inline void writeWord(const char *s);   static const int buf_size = 4096;   inline int getChar() {     static char buf[buf_size];     static int len = 0, pos = 0;     if (pos == len) {       pos = 0, len = fread(buf, 1, buf_size, stdin);     }     if (pos == len) {       return -1;     }     return buf[pos++];   }   inline int readChar() {     int c = getChar();     while (c <= 32) {       c = getChar();     }     return c;   }   template <class T>   inline T readInt() {     int s = 1, c = readChar();     T x = 0;     if (c ==  - ) s = -1, c = getChar();     while ( 0  <= c && c <=  9 ) x = x * 10 + c -  0 , c = getChar();     return s == 1 ? x : -x;   }   static int write_pos = 0;   static char write_buf[buf_size];   inline void writeChar(int x) {     if (write_pos == buf_size)       fwrite(write_buf, 1, buf_size, stdout), write_pos = 0;     write_buf[write_pos++] = x;   }   template <class T>   inline void writeInt(T x, char end) {     if (x < 0) writeChar( - ), x = -x;     char s[24];     int n = 0;     while (x || !n) s[n++] =  0  + x % 10, x /= 10;     while (n--) writeChar(s[n]);     if (end) writeChar(end);   }   inline void writeWord(const char *s) {     while (*s) writeChar(*s++);   }   struct Flusher {     ~Flusher() {       if (write_pos) fwrite(write_buf, 1, write_pos, stdout), write_pos = 0;     }   } flusher;   using namespace std;   const int MAXN = 100228;   int n, m;   int a[MAXN], ans[MAXN], lp[MAXN];   vector<pair<int, int> > vq[MAXN];   int main() {     n = readInt(), m = readInt();     for (int i = 0; i < n; ++i) {       lp[i] = -1;     }     for (int i = 0; i < m; ++i) {       int l = readInt(), r = readInt();       l--, r--;       lp[r] = l;     }     int q = readInt();     for (int i = 0; i < q; ++i) {       int x = readInt(), y = readInt();       x--, y--;       vq[y].push_back({x, i});     }     for (int i = 0; i < n; ++i) {       a[i] = i;     }     for (int i = 0; i < n; ++i) {       int x = lp[i];       for (int j = 0; j <= x; ++j) {         a[j] = a[j] >= x ? i : a[j];       }       for (auto p : vq[i]) {         ans[p.second] = a[p.first];       }     }     for (int i = 0; i < q; ++i) {       writeInt(ans[i] + 1,   n );     }     return 0;   }   