N, M = list(map(int, input().split()))

imos = [0]*(N+1)

for _ in range(M):

    # ゲートの情報が入ってくる

    l, r = [int(x)-1 for x in input().split()]

    imos[l] += 1

    imos[r+1] -= 1  # rまでは有効であり、r+1以降が無向になる仕様であるのでr+1をデクリメントする



cumulative = [imos[0]]

for value in imos[1:]:

    cumulative.append(cumulative[-1]+value)

ans = 0

for c in cumulative:

    if c == M:

        ans += 1

print(ans)

N, M = list(map(int, input().split()))

left = -1

right = 10**10



for _ in range(M):

    l, r = list(map(int, input().split()))

    left = max(left, l)

    right = min(right, r)



print((max(right-left+1, 0)))

N, M = list(map(int, input().split()))
imos = [0] * (N + 1)
for _ in range(M):
    # ゲートの情報が入ってくる
    l, r = [int(x) - 1 for x in input().split()]
    imos[l] += 1
    imos[r + 1] -= 1  # rまでは有効であり、r+1以降が無向になる仕様であるのでr+1をデクリメントする
cumulative = [imos[0]]
for value in imos[1:]:
    cumulative.append(cumulative[-1] + value)
ans = 0
for c in cumulative:
    if c == M:
        ans += 1
print(ans)

N, M = list(map(int, input().split()))
left = -1
right = 10**10
for _ in range(M):
    l, r = list(map(int, input().split()))
    left = max(left, l)
    right = min(right, r)
print((max(right - left + 1, 0)))

-imos = [0] * (N + 1) +left = -1 +right = 10**10 -    # ゲートの情報が入ってくる -    l, r = [int(x) - 1 for x in input().split()] -    imos[l] += 1 -    imos[r + 1] -= 1  # rまでは有効であり、r+1以降が無向になる仕様であるのでr+1をデクリメントする -cumulative = [imos[0]] -for value in imos[1:]: -    cumulative.append(cumulative[-1] + value) -ans = 0 -for c in cumulative: -    if c == M: -        ans += 1 -print(ans) +    l, r = list(map(int, input().split())) +    left = max(left, l) +    right = min(right, r) +print((max(right - left + 1, 0)))