#include <bits/stdc++.h>
int exp(int x, int y, int p) {
  int res = 1;
  while (y) {
    if (y % 2) res = (res * x % p) % p;
    x = (x * x) % p;
    y /= 2;
  }
  return res;
}
int expo(int x, int y) {
  int res = 1;
  while (y) {
    if (y % 2) res = (res * x % ((int)1e9 + 7)) % ((int)1e9 + 7);
    x = (x * x) % ((int)1e9 + 7);
    y /= 2;
  }
  return res;
}
int add(long long a, long long b) {
  return (a % ((int)1e9 + 7) + b % ((int)1e9 + 7) + ((int)1e9 + 7)) %
         ((int)1e9 + 7);
}
int sub(int a, int b) {
  return (a % ((int)1e9 + 7) - b % ((int)1e9 + 7) + ((int)1e9 + 7)) %
         ((int)1e9 + 7);
}
int mul(int a, int b) {
  return ((a % ((int)1e9 + 7)) * (b % ((int)1e9 + 7)) + ((int)1e9 + 7)) %
         ((int)1e9 + 7);
}
int inv(int x) { return expo(x, ((int)1e9 + 7) - 2); }
using namespace std;
vector<string> vec_splitter(string s) {
  s += ',';
  vector<string> res;
  while (!s.empty()) {
    res.push_back(s.substr(0, s.find(',')));
    s = s.substr(s.find(',') + 1);
  }
  return res;
}
void debug_out(vector<string> __attribute__((unused)) args,
               __attribute__((unused)) int idx,
               __attribute__((unused)) int LINE_NUM) {
  cerr << endl;
}
template <typename Head, typename... Tail>
void debug_out(vector<string> args, int idx, int LINE_NUM, Head H, Tail... T) {
  if (idx > 0)
    cerr << ", ";
  else
    cerr << "Line(" << LINE_NUM << ") ";
  stringstream ss;
  ss << H;
  cerr << args[idx] << " = " << ss.str();
  debug_out(args, idx + 1, LINE_NUM, T...);
}
long long Ceil(long long a, long long b) { return (a / b) + ((a % b) != 0); }
int main() {
  int t;
  cin >> t;
  while (t--) {
    long long n, x, m;
    cin >> n >> x >> m;
    long long X = x, Y = x;
    for (int i = 1; i <= m; i++) {
      long long a, b;
      cin >> a >> b;
      if (X < a && Y >= a || X <= b && Y > b || X >= a && Y <= b) {
        X = min(X, a);
        Y = max(Y, b);
      }
    }
    cout << Y - X + 1 << "\n";
  }
}
