import sys
input=sys.stdin.readline
from bisect import bisect_left
n,q=map(int,input().split())
stop=[]
for i in range(n):
	s,t,x=map(int,input().split())
	stop.append((s,t,x))
stop.sort(key=lambda x:x[2])
d=[int(input())for i in range(q)]
R=[-1]*q
ans=[-1]*q
for s,t,x in stop:
	#lからrにある区間のansをxに更新したい
	l=bisect_left(d,s-x)
	r=bisect_left(d,t-x)
	while l<r:
		if R[l]==-1:#最左がまだ確定していない場合
			ans[l]=x
			R[l]=r
			l+=1
		else:
			l=R[l]#確定しているところを飛ばす
for x in ans:
	print(x) import sys sys input=sys.stdin.readline input sys.stdin.readline sys.stdin sys stdin readline from bisect import bisect_left n,q=map(int,input().split()) n map(int,input().split()) map int input().split() ().split () input split q stop=[] stop [] for i in range(n):
	s,t,x=map(int,input().split())
	stop.append((s,t,x)) i range(n) range n s,t,x=map(int,input().split()) s map(int,input().split()) map int input().split() ().split () input split t x stop.append((s,t,x)) stop.append stop append (s,t,x) s t x stop.sort(key=lambda x:x[2]) stop.sort stop sort key=lambda x:x[2] key lambda x:x[2] x[2] x 2 x int(input())for i in range(q) for i in range(q) i range(q) range q for i in range(q) int(input()) int input() input d=[int(input())for i in range(q)] d [int(input())for i in range(q)] R=[-1]*q R [-1]*q [-1] -1 q ans=[-1]*q ans [-1]*q [-1] -1 q for s,t,x in stop:
	#lからrにある区間のansをxに更新したい
	l=bisect_left(d,s-x)
	r=bisect_left(d,t-x)
	while l<r:
		if R[l]==-1:#最左がまだ確定していない場合
			ans[l]=x
			R[l]=r
			l+=1
		else:
			l=R[l]#確定しているところを飛ばす s t x stop l=bisect_left(d,s-x) l bisect_left(d,s-x) bisect_left d s-x s x r=bisect_left(d,t-x) r bisect_left(d,t-x) bisect_left d t-x t x while l<r:
		if R[l]==-1:#最左がまだ確定していない場合
			ans[l]=x
			R[l]=r
			l+=1
		else:
			l=R[l]#確定しているところを飛ばす l<r l r if R[l]==-1:#最左がまだ確定していない場合
			ans[l]=x
			R[l]=r
			l+=1
		else:
			l=R[l]#確定しているところを飛ばす R[l]==-1 R[l] R l -1 ans[l]=x ans[l] ans l x R[l]=r R[l] R l r l+=1 l 1 l=R[l] l R[l] R l for x in ans:
	print(x) x ans print(x) print x l=bisect_left(d,s-x) bisect_left(d,s-x) l n,q=map(int,input().split()) map(int,input().split()) n d=[int(input())for i in range(q)] [int(input())for i in range(q)] d l=R[l] R[l] l x=map(int,input().split()) map(int,input().split()) x ans=[-1]*q [-1]*q ans s,t,x=map(int,input().split()) map(int,input().split()) s stop=[] [] stop R=[-1]*q [-1]*q R r=bisect_left(d,t-x) bisect_left(d,t-x) r input=sys.stdin.readline sys.stdin.readline input t,x=map(int,input().split()) map(int,input().split()) t q=map(int,input().split()) map(int,input().split()) q l+=1 1 l
import sys
input=sys.stdin.readline
from bisect import bisect_left
n,q=map(int,input().split())
stop=[]
for i in range(n):
	s,t,x=map(int,input().split())
	stop.append((s,t,x))
stop.sort(key=lambda x:x[2])
d=[int(input())for i in range(q)]
R=[-1]*q
ans=[-1]*q
for s,t,x in stop:
	#lからrにある区間のansをxに更新したい
	l=bisect_left(d,s-x)
	r=bisect_left(d,t-x)
	while l<r:
		if R[l]==-1:#最左がまだ確定していない場合
			ans[l]=x
			R[l]=r
			l+=1
		else:
			l=R[l]#確定しているところを飛ばす
for x in ans:
	print(x)
