import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines

from bisect import bisect_left 
from operator import itemgetter
def main():
    n, q = map(int, readline().split())
    STX = []
    for _ in range(n):
        s, t, x = map(int, readline().split())
        STX.append((s, t, x))
    D = []
    for _ in range(q):
        d = int(readline())
        D.append(d)

    STX.sort(key=itemgetter(2))

    ans = [-1 for _ in range(q)]
    skipTo = [-1 for _ in range(q)]
    for s, t, x in STX:
        #Dは狭義単調増加列で与えられている
        #s-x<=d<t-xとなるようなDの要素dが格納されている範囲のインデックスを求める
        #以下のようにすれば[left,right]のdがs-x<= d < t-xを満たす
        left = bisect_left(D, s-x)
        right = bisect_left(D, t-x)

        #xが小さいほど早い時刻で歩くのを止めることになる
        #よって、xの昇順に並んでいるので初めて[left, right)の範囲に入ったときだけansを更新するようにしたい
        #skiptoリストを用いて初めてでないときは飛ばすようにする
        while left < right: 
            if skipTo[left] == -1:
                #[left, right)は"このforループ"でansが決まる
                #よってleftが以前ansを決めたインデックスならright未満まではansが決まっているはずなのでrightまでとばす
                #そのためにrightを記録する
                skipTo[left] = right
                ans[left] = x
                left += 1
            else:
                #sikipTo[left]未満はansが決まっているので飛ばす
                left = skipTo[left] 
    for i in ans:
        print(i)
if __name__ == '__main__':
    main() import sys sys read = sys.stdin.buffer.read read sys.stdin.buffer.read sys.stdin.buffer sys.stdin sys stdin buffer read readline = sys.stdin.buffer.readline readline sys.stdin.buffer.readline sys.stdin.buffer sys.stdin sys stdin buffer readline readlines = sys.stdin.buffer.readlines readlines sys.stdin.buffer.readlines sys.stdin.buffer sys.stdin sys stdin buffer readlines from bisect import bisect_left from operator import itemgetter def main():
    n, q = map(int, readline().split())
    STX = []
    for _ in range(n):
        s, t, x = map(int, readline().split())
        STX.append((s, t, x))
    D = []
    for _ in range(q):
        d = int(readline())
        D.append(d)

    STX.sort(key=itemgetter(2))

    ans = [-1 for _ in range(q)]
    skipTo = [-1 for _ in range(q)]
    for s, t, x in STX:
        #Dは狭義単調増加列で与えられている
        #s-x<=d<t-xとなるようなDの要素dが格納されている範囲のインデックスを求める
        #以下のようにすれば[left,right]のdがs-x<= d < t-xを満たす
        left = bisect_left(D, s-x)
        right = bisect_left(D, t-x)

        #xが小さいほど早い時刻で歩くのを止めることになる
        #よって、xの昇順に並んでいるので初めて[left, right)の範囲に入ったときだけansを更新するようにしたい
        #skiptoリストを用いて初めてでないときは飛ばすようにする
        while left < right: 
            if skipTo[left] == -1:
                #[left, right)は"このforループ"でansが決まる
                #よってleftが以前ansを決めたインデックスならright未満まではansが決まっているはずなのでrightまでとばす
                #そのためにrightを記録する
                skipTo[left] = right
                ans[left] = x
                left += 1
            else:
                #sikipTo[left]未満はansが決まっているので飛ばす
                left = skipTo[left] 
    for i in ans:
        print(i) main n, q = map(int, readline().split()) n map(int, readline().split()) map int readline().split() ().split () readline split q STX = [] STX [] for _ in range(n):
        s, t, x = map(int, readline().split())
        STX.append((s, t, x))
     _ range(n) range n s, t, x = map(int, readline().split()) s map(int, readline().split()) map int readline().split() ().split () readline split t x STX.append((s, t, x)) STX.append STX append (s, t, x) s t x D = [] D [] for _ in range(q):
        d = int(readline())
        D.append(d)

     _ range(q) range q d = int(readline()) d int(readline()) int readline() readline D.append(d) D.append D append d STX.sort(key=itemgetter(2)) STX.sort STX sort key=itemgetter(2) key itemgetter(2) itemgetter 2 -1 for _ in range(q) for _ in range(q) _ range(q) range q for _ in range(q) -1 ans = [-1 for _ in range(q)] ans [-1 for _ in range(q)] -1 for _ in range(q) for _ in range(q) _ range(q) range q for _ in range(q) -1 skipTo = [-1 for _ in range(q)] skipTo [-1 for _ in range(q)] for s, t, x in STX:
        #Dは狭義単調増加列で与えられている
        #s-x<=d<t-xとなるようなDの要素dが格納されている範囲のインデックスを求める
        #以下のようにすれば[left,right]のdがs-x<= d < t-xを満たす
        left = bisect_left(D, s-x)
        right = bisect_left(D, t-x)

        #xが小さいほど早い時刻で歩くのを止めることになる
        #よって、xの昇順に並んでいるので初めて[left, right)の範囲に入ったときだけansを更新するようにしたい
        #skiptoリストを用いて初めてでないときは飛ばすようにする
        while left < right: 
            if skipTo[left] == -1:
                #[left, right)は"このforループ"でansが決まる
                #よってleftが以前ansを決めたインデックスならright未満まではansが決まっているはずなのでrightまでとばす
                #そのためにrightを記録する
                skipTo[left] = right
                ans[left] = x
                left += 1
            else:
                #sikipTo[left]未満はansが決まっているので飛ばす
                left = skipTo[left] 
     s t x STX left = bisect_left(D, s-x) left bisect_left(D, s-x) bisect_left D s-x s x right = bisect_left(D, t-x) right bisect_left(D, t-x) bisect_left D t-x t x while left < right: 
            if skipTo[left] == -1:
                #[left, right)は"このforループ"でansが決まる
                #よってleftが以前ansを決めたインデックスならright未満まではansが決まっているはずなのでrightまでとばす
                #そのためにrightを記録する
                skipTo[left] = right
                ans[left] = x
                left += 1
            else:
                #sikipTo[left]未満はansが決まっているので飛ばす
                left = skipTo[left] 
     left < right left right if skipTo[left] == -1:
                #[left, right)は"このforループ"でansが決まる
                #よってleftが以前ansを決めたインデックスならright未満まではansが決まっているはずなのでrightまでとばす
                #そのためにrightを記録する
                skipTo[left] = right
                ans[left] = x
                left += 1
            else:
                #sikipTo[left]未満はansが決まっているので飛ばす
                left = skipTo[left] 
     skipTo[left] == -1 skipTo[left] skipTo left -1 skipTo[left] = right skipTo[left] skipTo left right ans[left] = x ans[left] ans left x left += 1 left 1 left = skipTo[left] left skipTo[left] skipTo left for i in ans:
        print(i) i ans print(i) print i if __name__ == '__main__':
    main() __name__ == '__main__' __name__ '__main__' main() main readline = sys.stdin.buffer.readline sys.stdin.buffer.readline readline def main():
    n, q = map(int, readline().split())
    STX = []
    for _ in range(n):
        s, t, x = map(int, readline().split())
        STX.append((s, t, x))
    D = []
    for _ in range(q):
        d = int(readline())
        D.append(d)

    STX.sort(key=itemgetter(2))

    ans = [-1 for _ in range(q)]
    skipTo = [-1 for _ in range(q)]
    for s, t, x in STX:
        #Dは狭義単調増加列で与えられている
        #s-x<=d<t-xとなるようなDの要素dが格納されている範囲のインデックスを求める
        #以下のようにすれば[left,right]のdがs-x<= d < t-xを満たす
        left = bisect_left(D, s-x)
        right = bisect_left(D, t-x)

        #xが小さいほど早い時刻で歩くのを止めることになる
        #よって、xの昇順に並んでいるので初めて[left, right)の範囲に入ったときだけansを更新するようにしたい
        #skiptoリストを用いて初めてでないときは飛ばすようにする
        while left < right: 
            if skipTo[left] == -1:
                #[left, right)は"このforループ"でansが決まる
                #よってleftが以前ansを決めたインデックスならright未満まではansが決まっているはずなのでrightまでとばす
                #そのためにrightを記録する
                skipTo[left] = right
                ans[left] = x
                left += 1
            else:
                #sikipTo[left]未満はansが決まっているので飛ばす
                left = skipTo[left] 
    for i in ans:
        print(i) def main():
    n, q = map(int, readline().split())
    STX = []
    for _ in range(n):
        s, t, x = map(int, readline().split())
        STX.append((s, t, x))
    D = []
    for _ in range(q):
        d = int(readline())
        D.append(d)

    STX.sort(key=itemgetter(2))

    ans = [-1 for _ in range(q)]
    skipTo = [-1 for _ in range(q)]
    for s, t, x in STX:
        #Dは狭義単調増加列で与えられている
        #s-x<=d<t-xとなるようなDの要素dが格納されている範囲のインデックスを求める
        #以下のようにすれば[left,right]のdがs-x<= d < t-xを満たす
        left = bisect_left(D, s-x)
        right = bisect_left(D, t-x)

        #xが小さいほど早い時刻で歩くのを止めることになる
        #よって、xの昇順に並んでいるので初めて[left, right)の範囲に入ったときだけansを更新するようにしたい
        #skiptoリストを用いて初めてでないときは飛ばすようにする
        while left < right: 
            if skipTo[left] == -1:
                #[left, right)は"このforループ"でansが決まる
                #よってleftが以前ansを決めたインデックスならright未満まではansが決まっているはずなのでrightまでとばす
                #そのためにrightを記録する
                skipTo[left] = right
                ans[left] = x
                left += 1
            else:
                #sikipTo[left]未満はansが決まっているので飛ばす
                left = skipTo[left] 
    for i in ans:
        print(i) main read = sys.stdin.buffer.read sys.stdin.buffer.read read readlines = sys.stdin.buffer.readlines sys.stdin.buffer.readlines readlines
import sys
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines

from bisect import bisect_left 
from operator import itemgetter
def main():
    n, q = map(int, readline().split())
    STX = []
    for _ in range(n):
        s, t, x = map(int, readline().split())
        STX.append((s, t, x))
    D = []
    for _ in range(q):
        d = int(readline())
        D.append(d)

    STX.sort(key=itemgetter(2))

    ans = [-1 for _ in range(q)]
    skipTo = [-1 for _ in range(q)]
    for s, t, x in STX:
        #Dは狭義単調増加列で与えられている
        #s-x<=d<t-xとなるようなDの要素dが格納されている範囲のインデックスを求める
        #以下のようにすれば[left,right]のdがs-x<= d < t-xを満たす
        left = bisect_left(D, s-x)
        right = bisect_left(D, t-x)

        #xが小さいほど早い時刻で歩くのを止めることになる
        #よって、xの昇順に並んでいるので初めて[left, right)の範囲に入ったときだけansを更新するようにしたい
        #skiptoリストを用いて初めてでないときは飛ばすようにする
        while left < right: 
            if skipTo[left] == -1:
                #[left, right)は"このforループ"でansが決まる
                #よってleftが以前ansを決めたインデックスならright未満まではansが決まっているはずなのでrightまでとばす
                #そのためにrightを記録する
                skipTo[left] = right
                ans[left] = x
                left += 1
            else:
                #sikipTo[left]未満はansが決まっているので飛ばす
                left = skipTo[left] 
    for i in ans:
        print(i)
if __name__ == '__main__':
    main()
