You are given an array consisting of n integers a_1, a_2, ..., a_n. Initially a_x = 1, all other elements are equal to 0.

You have to perform m operations. During the i-th operation, you choose two indices c and d such that l_i ≤ c, d ≤ r_i, and swap a_c and a_d.

Calculate the number of indices k such that it is possible to choose the operations so that a_k = 1 in the end.

Input

The first line contains a single integer t (1 ≤ t ≤ 100) — the number of test cases. Then the description of t testcases follow.

The first line of each test case contains three integers n, x and m (1 ≤ n ≤ 10^9; 1 ≤ m ≤ 100; 1 ≤ x ≤ n).

Each of next m lines contains the descriptions of the operations; the i-th line contains two integers l_i and r_i (1 ≤ l_i ≤ r_i ≤ n).

Output

For each test case print one integer — the number of indices k such that it is possible to choose the operations so that a_k = 1 in the end.

Example

Input


3
6 4 3
1 6
2 3
5 5
4 1 2
2 4
1 2
3 3 2
2 3
1 2


Output


6
2
3

Note

In the first test case, it is possible to achieve a_k = 1 for every k. To do so, you may use the following operations:

  1. swap a_k and a_4; 
  2. swap a_2 and a_2; 
  3. swap a_5 and a_5. 



In the second test case, only k = 1 and k = 2 are possible answers. To achieve a_1 = 1, you have to swap a_1 and a_1 during the second operation. To achieve a_2 = 1, you have to swap a_1 and a_2 during the second operation.
# s = 'dic = {'
# c = 0
# for i in range(ord('A'),ord('X')):
# 	if chr(i) not in ['B','J','O','U']:
# 		s+= "'" + chr(i) + "':" + str(c) + ","
# 		c+=1
# s+="'" + 'Y' + "':" + str(c) + ","
# c+=1
# s+="'" + 'X' + "':" + str(c) + ","
# c = 0
# for i in range(ord('a'),ord('x')):
# 	if chr(i) not in ['b','j','o','u']:
# 		s+= "'" + chr(i) + "':" + str(c) + ","
# 		c+=1
# s+="'" + 'y' + "':" + str(c) + ","
# c+=1
# s+="'" + 'x' + "':" + str(c) + " }"
# print(s)
# n = int(input())
# b = list(map(int,input().split()))
# m = int(input())
# g = list(map(int,input().split()))
# c = 0
# b.sort()
# g.sort()
# t = [False]*m
# for i in range(n):
# 	for j in range(m):
# 		if abs(b[i]-g[j])<=1:
# 			c+=1
# 			g[j] = -500
# 			break
# print(c)
# a = list(input())
# b = list(input())
# a.sort()
# b.sort()
# print(a,b)
# x,y = 0,0
# if a>b:
# 	print(1)
# elif a<b:
# 	print(2)
# else:
# 	print(3)
# for i in range(len(a)):
# 	if ord(a[i])>ord(b[i]):
# 		x+=1
# 	elif ord(a[i])<ord(b[i]):
# 		y+=1
# 	else:
# 		x+=1
# 		y+=1
# 	print(x,y)
# if x>y:
# 	print('Wakanda')
# elif y>x:
# 	print('Kree')
# else:
# 	print('Tie')



# arr = [1]
# x = 1
# while x<=10**18:
# 	x*=2
# 	arr.append(x)
# print(arr)

# for _ in range(int(input())):
# 	p = list(map(int,input().split()))
# 	a = list(map(int,input().split()))
# 	diff = [a[0]-p[0],a[1]-p[1],a[2]-p[2]]
# 	mult = [-1]*3
# 	for i in range(3):
# 		if a[i]%p[i]==0:
# 			mult[i] = a[i]//p[i]
# 	if diff[0]==diff[1]==diff[2]:
# 		if diff[0]==0:
# 			print(0)
# 		else:
# 			print(1)
# 	elif mult[0]==mult[1]==mult[2]!=-1:
# 		print(1)
# 	elif diff[0]==diff[1]:
# 		if diff[0]==0 or diff[2]==0:
# 			print(1)
# 		else:
# 			print(2)
# 	elif diff[0]==diff[2]:
# 		if diff[0]==0 or diff[1]==0:
# 			print(1)
# 		else:
# 			print(2)
# 	elif diff[1]==diff[2]:
# 		if diff[1]==0 or diff[0]==0:
# 			print(1)
# 		else:
# 			print(2)
# 	elif mult[0]==mult[1]!=-1 or mult[0]==mult[2]!=-1 or mult[1]==mult[0]!=-1  or mult[1]==mult[2]!=-1  or mult[2]==mult[0]!=-1  or mult[2]==mult[1]!=-1 :
# 		print(2)
# 	elif (mult[0]*mult[1]==mult[2] and mult[0]!=-1 and mult[1]!=-1 and mult[2]!=-1) or (mult[1]*mult[2]==mult[0] and mult[0]!=-1 and mult[1]!=-1 and mult[2]!=-1) or (mult[0]*mult[2]==mult[1] and mult[0]!=-1 and mult[1]!=-1 and mult[2]!=-1):
# 		print(2)   
# 	elif a[0]%p[0]==a[1]%p[1] and a[0]%(a[0]%p[0]+p[0])==0 and a[1]%(a[1]%p[1]+p[1])==0 and a[2]%p[2]==0 and a[0]//(a[0]%p[0]+p[0])==a[1]%(a[1]%p[1]+p[1]):
# 		if a[2]==p[2] or a[2]//p[2]==a[0]//(a[0]%p[0]+p[0]):
# 			print(2)
# 	elif a[0]%p[0]==a[2]%p[2] and a[0]%(a[0]%p[0]+p[0])==0 and a[2]%(a[2]%p[2]+p[2])==0 and a[1]%p[1]==0 and a[0]//(a[0]%p[0]+p[0])==a[2]%(a[2]%p[2]+p[2]):
# 		if a[1]==p[1] or a[1]//p[1]==a[0]//(a[0]%p[0]+p[0]):
# 			print(2)
# 	elif a[2]%p[2]==a[1]%p[1] and a[2]%(a[2]%p[2]+p[2])==0 and a[1]%(a[1]%p[1]+p[1])==0 and a[0]%p[0]==0 and a[2]//(a[2]%p[2]+p[2])==a[1]%(a[1]%p[1]+p[1]):
# 		if a[0]==p[0] or a[0]//p[0]==a[2]//(a[2]%p[2]+p[2]):
# 			print(2)
# 	elif a[0]//p[0]==a[1]//p[1] and a[0]-(a[0]//p[0])*p[0] == a[1]-(a[1]//p[1])*p[1] == a[2]-p[2]:
# 		if a[2]==p[2]:
# 			print(1)
# 		else:
# 			print(2)
# 	elif a[0]//p[0]==a[2]//p[2] and a[0]-(a[0]//p[0])*p[0] == a[2]-(a[2]//p[2])*p[2] == a[1]-p[1]:
# 		if a[1]==p[1]:
# 			print(1)
# 		else:
# 			print(2)
# 	elif a[2]//p[2]==a[1]//p[1] and a[2]-(a[2]//p[2])*p[2] == a[1]-(a[1]//p[1])*p[1] == a[0]-p[0]:
# 		if a[0]==p[0]:
# 			print(1)
# 		else:
# 			print(2)
# 	elif a[0]==a[1]==a[2] and p[0]==p[1]!=p[2] or p[0]==p[2]!=p[1] or p[0]!=p[1]==p[2] or p[0]!=p[1]!=p[2]:
# 		print(2)
# 	else:
# 		print(3)

for _ in range(int(input())):
	n,x,m = map(int,input().split())
	xx = [x,x]
	ans = 1
	for f in range(m):
		p,q = map(int,input().split())
		if p<=xx[0]<=q or p<=xx[1]<=q:
			xx[0] = min(p,xx[0])
			xx[1] = max(q,xx[1])
	print(xx[1]-xx[0]+1)
