Buggy python submission (verdict: Time Limit Exceeded):
from bisect import bisect_left

N,Q = map(int, input().split())
STX = []
for i in range(N):
  *stx, = list(map(int, input().split()))
  STX.append(stx)
D = []
for i in range(Q):
  D.append(int(input()))

STX = sorted(STX, key=lambda x: x[2])

mask = [-1]*Q
ANS = [-1]*Q

for (s,t,x) in STX:
  s2 = (s - x)
  t2 = (t - x)

  start = bisect_left(D, s2)
  end = bisect_left(D, t2, lo=start)

  #print(start, end, DI)
  while (start < end):
    if (-1 == mask[start]):
      ANS[start] = x
      mask[start] = end
      start += 1
    else:
      start = mask[start]


print(*ANS, sep='\n')


Fixed submission:
import sys
from bisect import bisect_left
input = sys.stdin.readline

N,Q = map(int, input().split())
STX = [list(map(int, input().split())) for _ in range(N)]
D = [int(input()) for _ in range(Q)]

STX = sorted(STX, key=lambda x: x[2])

MASK = [-1]*Q
ANS = [-1]*Q

for (s,t,x) in STX:
  s2 = (s - x)
  t2 = (t - x)

  start = bisect_left(D, s2)
  end = bisect_left(D, t2, lo=start)

  #print(start, end, DI)
  while (start < end):
    if (-1 == MASK[start]):
      ANS[start] = x
      MASK[start] = end
      start += 1
    else:
      start = MASK[start]


print(*ANS, sep='\n')

Buggy python submission (verdict: Time Limit Exceeded):
from bisect import bisect_left

N,Q = map(int, input().split())
STX = []
for i in range(N):
  *stx, = list(map(int, input().split()))
  STX.append(stx)
D = []
for i in range(Q):
  D.append(int(input()))

STX = sorted(STX, key=lambda x: x[2])

DI = [i for i in range(Q)]
ANS = [-1]*Q
for (s,t,x) in STX:
  s2 = (s - x)
  t2 = (t - x)

  D_sub = [D[di] for di in DI]
  start = bisect_left(D_sub, s2)
  end = bisect_left(D_sub, t2, lo=start)
    
  #print(start, end, DI)
  DI_copy = DI[:]
  while (start < end):
    di = DI_copy[start]
    ANS[di] = x
    DI.remove(di)
    start += 1

print(*ANS, sep='\n')


Fixed submission:
import sys
from bisect import bisect_left
input = sys.stdin.readline

N,Q = map(int, input().split())
STX = [list(map(int, input().split())) for _ in range(N)]
D = [int(input()) for _ in range(Q)]

STX = sorted(STX, key=lambda x: x[2])

MASK = [-1]*Q
ANS = [-1]*Q

for (s,t,x) in STX:
  s2 = (s - x)
  t2 = (t - x)

  start = bisect_left(D, s2)
  end = bisect_left(D, t2, lo=start)

  #print(start, end, DI)
  while (start < end):
    if (-1 == MASK[start]):
      ANS[start] = x
      MASK[start] = end
      start += 1
    else:
      start = MASK[start]


print(*ANS, sep='\n')

Buggy python submission (verdict: Time Limit Exceeded):
from bisect import bisect_left

N,Q = map(int, input().split())
STX = []
for i in range(N):
  *stx, = list(map(int, input().split()))
  STX.append(stx)
D = []
for i in range(Q):
  D.append(int(input()))

STX = sorted(STX, key=lambda x: x[2])

DI = [i for i in range(Q)]
ANS = [-1]*Q
for (s,t,x) in STX:
  s2 = (s - x)
  t2 = (t - x)

  D_sub = [D[di] for di in DI]
  start = bisect_left(D_sub, s2)
  end = bisect_left(D_sub, t2, lo=start)
    
  #print(start, end, DI)
  DI_copy = DI[:]
  while (start < end):
    di = DI_copy[start]
    ANS[di] = x
    DI.remove(di)
    start += 1

print(*ANS, sep='\n')


Fixed submission:
import sys
from bisect import bisect_left
input = sys.stdin.readline

N,Q = map(int, input().split())
STX = [list(map(int, input().split())) for _ in range(N)]
D = [int(input()) for _ in range(Q)]

STX = sorted(STX, key=lambda x: x[2])

MASK = [-1]*Q
ANS = [-1]*Q

for (s,t,x) in STX:
  s2 = (s - x)
  t2 = (t - x)

  start = bisect_left(D, s2)
  end = bisect_left(D, t2, lo=start)

  #print(start, end, DI)
  while (start < end):
    if (-1 == MASK[start]):
      ANS[start] = x
      MASK[start] = end
      start += 1
    else:
      start = MASK[start]


print(*ANS, sep='\n')

Buggy python submission (verdict: Time Limit Exceeded):
N,Q = map(int, input().split())
STX = []
for i in range(N):
  *stx, = list(map(int, input().split()))
  STX.append(stx)
D = []
for i in range(Q):
  D.append(int(input()))

STX = sorted(STX, key=lambda x: x[2])

DI = [i for i in range(Q)]
ANS = [-1]*Q
for (s,t,x) in STX:
  s2 = (s - x)
  t2 = (t - x)
  for di in DI[:]:
    if ((s2 <= D[di]) and (D[di] < t2)):
      ANS[di] = x
      DI.remove(di)

print(*ANS, sep='\n')


Fixed submission:
import sys
from bisect import bisect_left
input = sys.stdin.readline

N,Q = map(int, input().split())
STX = [list(map(int, input().split())) for _ in range(N)]
D = [int(input()) for _ in range(Q)]

STX = sorted(STX, key=lambda x: x[2])

MASK = [-1]*Q
ANS = [-1]*Q

for (s,t,x) in STX:
  s2 = (s - x)
  t2 = (t - x)

  start = bisect_left(D, s2)
  end = bisect_left(D, t2, lo=start)

  #print(start, end, DI)
  while (start < end):
    if (-1 == MASK[start]):
      ANS[start] = x
      MASK[start] = end
      start += 1
    else:
      start = MASK[start]


print(*ANS, sep='\n')

Buggy python submission (verdict: Time Limit Exceeded):
N,Q = map(int, input().split())
STX = []
for i in range(N):
  *stx, = list(map(int, input().split()))
  STX.append(stx)
D = []
for i in range(Q):
  D.append(int(input()))

STX = sorted(STX, key=lambda x: x[2])

DI = [i for i in range(Q)]
ANS = [-1]*Q
for (s,t,x) in STX:
  s2 = (s - x)
  t2 = (t - x)
  for di in DI[:]:
    if ((s2 <= D[di]) and (D[di] < t2)):
      ANS[di] = x
      DI.remove(di)

print(*ANS, sep='\n')


Fixed submission:
import sys
from bisect import bisect_left
input = sys.stdin.readline

N,Q = map(int, input().split())
STX = [list(map(int, input().split())) for _ in range(N)]
D = [int(input()) for _ in range(Q)]

STX = sorted(STX, key=lambda x: x[2])

MASK = [-1]*Q
ANS = [-1]*Q

for (s,t,x) in STX:
  s2 = (s - x)
  t2 = (t - x)

  start = bisect_left(D, s2)
  end = bisect_left(D, t2, lo=start)

  #print(start, end, DI)
  while (start < end):
    if (-1 == MASK[start]):
      ANS[start] = x
      MASK[start] = end
      start += 1
    else:
      start = MASK[start]


print(*ANS, sep='\n')