Buggy python submission (verdict: Time Limit Exceeded):
N,M=map(int,input().split())

L=[0]*M
R=[0]*M

for i in range(M):
  L[i],R[i]=map(int,input().split())

def prison(N,M,L,R):
  num=list(range(L[0],(R[0]+1)))
  for j in range(M):
    num=[i for i in num if L[j]<=i<=R[j]]
  return len(num)
print(prison(N,M,L,R))

Fixed submission:
N,M=map(int,input().split())

L=[0]*M
R=[0]*M

for i in range(M):
  L[i],R[i]=map(int,input().split())

def prison(N,M,L,R):
  max_val=min(R)
  min_val=max(L)
  num=max_val-min_val+1
  if num<=0:
    num=0
  return(num)

print(prison(N,M,L,R))

Buggy python submission (verdict: Time Limit Exceeded):
N,M=map(int,input().split())

L=[0]*M
R=[0]*M

for i in range(M):
  L[i],R[i]=map(int,input().split())

def prison(N,M,L,R):
  num=list(range(L[0],(R[0]+1)))
  for l,r in zip(L[1:],R[1:]):
    num=[i for i in num if l<=i<=r]
  return len(num)
print(prison(N,M,L,R))

Fixed submission:
N,M=map(int,input().split())

L=[0]*M
R=[0]*M

for i in range(M):
  L[i],R[i]=map(int,input().split())

def prison(N,M,L,R):
  max_val=min(R)
  min_val=max(L)
  num=max_val-min_val+1
  if num<=0:
    num=0
  return(num)

print(prison(N,M,L,R))

Buggy python submission (verdict: Time Limit Exceeded):
N,M=map(int,input().split())

L=[0]*M
R=[0]*M

for i in range(M):
  L[i],R[i]=map(int,input().split())

def prison(N,M,L,R):
  count=0
  step=0
  for l,r in zip(L,R):
    num=list(range(l,(r+1)))
    if step!=0:
      num=list(set(num) & set(num_pre))
    num_pre=num
    step+=1
  return len(num_pre)
print(prison(N,M,L,R))

Fixed submission:
N,M=map(int,input().split())

L=[0]*M
R=[0]*M

for i in range(M):
  L[i],R[i]=map(int,input().split())

def prison(N,M,L,R):
  max_val=min(R)
  min_val=max(L)
  num=max_val-min_val+1
  if num<=0:
    num=0
  return(num)

print(prison(N,M,L,R))

Buggy python submission (verdict: Time Limit Exceeded):
N,M=map(int,input().split())

L=[0]*M
R=[0]*M

for i in range(M):
  L[i],R[i]=map(int,input().split())

def prison(N,M,L,R):
  count=0
  for n in range(N):
    num_of_truth=0
    for l,r in zip(L,R):
      if l<=(n+1)<=r:
        num_of_truth+=1
    if num_of_truth==M:
      count+=1
  return count
print(prison(N,M,L,R))

Fixed submission:
N,M=map(int,input().split())

L=[0]*M
R=[0]*M

for i in range(M):
  L[i],R[i]=map(int,input().split())

def prison(N,M,L,R):
  max_val=min(R)
  min_val=max(L)
  num=max_val-min_val+1
  if num<=0:
    num=0
  return(num)

print(prison(N,M,L,R))

Buggy python submission (verdict: Runtime Error):
N,M=map(int,input().split())
L=[0]*M
R=[0]*M
for i range(M):
  L[i],R[i]=map(int,input().split())

def prison(N,M,L,R):
  count=0
  for n in range(N):
    num_of_truth=0
    for l,r in zip(L,R):
      if l<=(n+1)<=r:
        num_of_truth+=1
    if num_of_truth==M:
      count+=1
  return count
 
print(prison(N,M,L,R))


Fixed submission:
N,M=map(int,input().split())

L=[0]*M
R=[0]*M

for i in range(M):
  L[i],R[i]=map(int,input().split())

def prison(N,M,L,R):
  max_val=min(R)
  min_val=max(L)
  num=max_val-min_val+1
  if num<=0:
    num=0
  return(num)

print(prison(N,M,L,R))

Buggy python submission (verdict: Runtime Error):
N,M=map(int,input().split())
L=[0]*M
R=[0]*M
for i range(M):
  L[i],R[i]=map(int,input().split())

def prison(N,M,L,R):
    count=0
    for n in range(N):
        num_of_truth=0
        for l,r in zip(L,R):
            if l<=(n+1)<=r:
                num_of_truth+=1
        if num_of_truth==M:
            count+=1
    return count

print(prison(N,M,L,R))

Fixed submission:
N,M=map(int,input().split())

L=[0]*M
R=[0]*M

for i in range(M):
  L[i],R[i]=map(int,input().split())

def prison(N,M,L,R):
  max_val=min(R)
  min_val=max(L)
  num=max_val-min_val+1
  if num<=0:
    num=0
  return(num)

print(prison(N,M,L,R))