from ctypes import *
import subprocess as sp
from operator import itemgetter
import sys
import os.path

# C++のstd::setのラッパー。こいつを呼び出す。
set_code = r"""
#include <set>

std::set<int> s;

void add(int x) {
    s.insert(x);
}

bool find(int x) {
    return s.find(x) != s.end();
}

void remove(int x) {
    s.erase(x);
}

bool empty() {
	return s.empty();
}

int getMin() {
	return *s.begin();
}
"""

class CppSet:
	# オブジェクトが作られた数
	# オブジェクトごとに共有ライブラリを作成する必要があるので、counterで共有ライブラリにIDを割り振る
	counter = 0

	def __init__(self):
		# 共有ライブラリを作成して、それを呼び出す
		lib_name = './hoge{}.so'.format(CppSet.counter)

		# C++のソースを書き出します
		code_file_name = "tmp.cpp"
		with open(code_file_name, "w") as f:
			f.write(set_code)

		CppSet.counter += 1 

		# 共有ライブラリを作成。-std=c++14とかにすると動かなくなる
		sp.Popen(['g++', '-fPIC', '-shared', '-std=c++11', '-O2', code_file_name, '-o', lib_name]).communicate()

		# Pythonから共有ライブラリを召喚します
		# 召喚方法は https://over80.hatenadiary.jp/entry/20150816/pure_python_inotify を参照
		# 上で書いたコードのgetMinとかの関数が、共有ライブラリではシンボルに変換される(マングリング)らしい
		# なので、シンボルから関数名を得るためにデマングルとかいうやつをやります
		# 最終的にシンボルと関数の対応関係を使って、各関数を召喚します
		# マングリング: https://albel06.hatenablog.com/entry/2016/03/17/180000
		# デマングル: http://0xcc.net/blog/archives/000095.html
		lib = CDLL(lib_name)
		self.add = getattr(lib, "_Z3addi")
		self.find = CFUNCTYPE(c_bool, c_int)(
						("_Z4findi", lib),
						((1, "x"), )
					)
		self.remove = getattr(lib, "_Z6removei")
		self.empty = CFUNCTYPE(c_bool)(
						("_Z5emptyv", lib),
						()
					)

		self.getMin = CFUNCTYPE(c_int)(
						("_Z6getMinv", lib),
						()
					)

def main():
	N, Q = map(int, sys.stdin.readline().split())
	tmp = [tuple(map(int, sys.stdin.readline().split())) for _ in range(N)]
	stx = [(s - x, 1, x) for s, t, x in tmp] + [(t - x, -1, x) for s, t, x in tmp]
	stx.sort()
	
	D = [int(sys.stdin.readline()) for _ in range(Q)] 
	ans = [-1]*Q

	idx = 0
	stx_len = len(stx)
	se = CppSet()
	for i, d in enumerate(D):
		while idx < stx_len:
			t, com, x = stx[idx]
			if t > d:
				break
			if com == 1:
				se.add(x)
			else:
				se.remove(x)
			idx += 1
		ans[i] = (-1 if se.empty() else se.getMin())

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

if __name__ == "__main__":
	main() from ctypes import * import subprocess as sp subprocess from operator import itemgetter import sys sys import os.path os.path set_code = r"""
#include <set>

std::set<int> s;

void add(int x) {
    s.insert(x);
}

bool find(int x) {
    return s.find(x) != s.end();
}

void remove(int x) {
    s.erase(x);
}

bool empty() {
	return s.empty();
}

int getMin() {
	return *s.begin();
}
""" set_code r"""
#include <set>

std::set<int> s;

void add(int x) {
    s.insert(x);
}

bool find(int x) {
    return s.find(x) != s.end();
}

void remove(int x) {
    s.erase(x);
}

bool empty() {
	return s.empty();
}

int getMin() {
	return *s.begin();
}
""" class CppSet:
	# オブジェクトが作られた数
	# オブジェクトごとに共有ライブラリを作成する必要があるので、counterで共有ライブラリにIDを割り振る
	counter = 0

	def __init__(self):
		# 共有ライブラリを作成して、それを呼び出す
		lib_name = './hoge{}.so'.format(CppSet.counter)

		# C++のソースを書き出します
		code_file_name = "tmp.cpp"
		with open(code_file_name, "w") as f:
			f.write(set_code)

		CppSet.counter += 1 

		# 共有ライブラリを作成。-std=c++14とかにすると動かなくなる
		sp.Popen(['g++', '-fPIC', '-shared', '-std=c++11', '-O2', code_file_name, '-o', lib_name]).communicate()

		# Pythonから共有ライブラリを召喚します
		# 召喚方法は https://over80.hatenadiary.jp/entry/20150816/pure_python_inotify を参照
		# 上で書いたコードのgetMinとかの関数が、共有ライブラリではシンボルに変換される(マングリング)らしい
		# なので、シンボルから関数名を得るためにデマングルとかいうやつをやります
		# 最終的にシンボルと関数の対応関係を使って、各関数を召喚します
		# マングリング: https://albel06.hatenablog.com/entry/2016/03/17/180000
		# デマングル: http://0xcc.net/blog/archives/000095.html
		lib = CDLL(lib_name)
		self.add = getattr(lib, "_Z3addi")
		self.find = CFUNCTYPE(c_bool, c_int)(
						("_Z4findi", lib),
						((1, "x"), )
					)
		self.remove = getattr(lib, "_Z6removei")
		self.empty = CFUNCTYPE(c_bool)(
						("_Z5emptyv", lib),
						()
					)

		self.getMin = CFUNCTYPE(c_int)(
						("_Z6getMinv", lib),
						()
					) CppSet counter = 0 counter 0 def __init__(self):
		# 共有ライブラリを作成して、それを呼び出す
		lib_name = './hoge{}.so'.format(CppSet.counter)

		# C++のソースを書き出します
		code_file_name = "tmp.cpp"
		with open(code_file_name, "w") as f:
			f.write(set_code)

		CppSet.counter += 1 

		# 共有ライブラリを作成。-std=c++14とかにすると動かなくなる
		sp.Popen(['g++', '-fPIC', '-shared', '-std=c++11', '-O2', code_file_name, '-o', lib_name]).communicate()

		# Pythonから共有ライブラリを召喚します
		# 召喚方法は https://over80.hatenadiary.jp/entry/20150816/pure_python_inotify を参照
		# 上で書いたコードのgetMinとかの関数が、共有ライブラリではシンボルに変換される(マングリング)らしい
		# なので、シンボルから関数名を得るためにデマングルとかいうやつをやります
		# 最終的にシンボルと関数の対応関係を使って、各関数を召喚します
		# マングリング: https://albel06.hatenablog.com/entry/2016/03/17/180000
		# デマングル: http://0xcc.net/blog/archives/000095.html
		lib = CDLL(lib_name)
		self.add = getattr(lib, "_Z3addi")
		self.find = CFUNCTYPE(c_bool, c_int)(
						("_Z4findi", lib),
						((1, "x"), )
					)
		self.remove = getattr(lib, "_Z6removei")
		self.empty = CFUNCTYPE(c_bool)(
						("_Z5emptyv", lib),
						()
					)

		self.getMin = CFUNCTYPE(c_int)(
						("_Z6getMinv", lib),
						()
					) __init__ lib_name = './hoge{}.so'.format(CppSet.counter) lib_name './hoge{}.so'.format(CppSet.counter) './hoge{}.so'.format './hoge{}.so' format CppSet.counter CppSet counter code_file_name = "tmp.cpp" code_file_name "tmp.cpp" with open(code_file_name, "w") as f:
			f.write(set_code)

		 open(code_file_name, "w") as f open(code_file_name, "w") open code_file_name "w" f f.write(set_code) f.write f write set_code CppSet.counter += 1 CppSet.counter CppSet counter 1 sp.Popen(['g++', '-fPIC', '-shared', '-std=c++11', '-O2', code_file_name, '-o', lib_name]).communicate() sp.Popen(['g++', '-fPIC', '-shared', '-std=c++11', '-O2', code_file_name, '-o', lib_name]).communicate sp.Popen(['g++', '-fPIC', '-shared', '-std=c++11', '-O2', code_file_name, '-o', lib_name]) sp.Popen sp Popen ['g++', '-fPIC', '-shared', '-std=c++11', '-O2', code_file_name, '-o', lib_name] 'g++' '-fPIC' '-shared' '-std=c++11' '-O2' code_file_name '-o' lib_name communicate lib = CDLL(lib_name) lib CDLL(lib_name) CDLL lib_name self.add = getattr(lib, "_Z3addi") self.add self add getattr(lib, "_Z3addi") getattr lib "_Z3addi" self.find = CFUNCTYPE(c_bool, c_int)(
						("_Z4findi", lib),
						((1, "x"), )
					) self.find self find CFUNCTYPE(c_bool, c_int)(
						("_Z4findi", lib),
						((1, "x"), )
					) (c_bool, c_int) CFUNCTYPE c_bool c_int ("_Z4findi", lib) "_Z4findi" lib (1, "x") 1 "x" self.remove = getattr(lib, "_Z6removei") self.remove self remove getattr(lib, "_Z6removei") getattr lib "_Z6removei" self.empty = CFUNCTYPE(c_bool)(
						("_Z5emptyv", lib),
						()
					) self.empty self empty CFUNCTYPE(c_bool)(
						("_Z5emptyv", lib),
						()
					) (c_bool) CFUNCTYPE c_bool ("_Z5emptyv", lib) "_Z5emptyv" lib () self.getMin = CFUNCTYPE(c_int)(
						("_Z6getMinv", lib),
						()
					) self.getMin self getMin CFUNCTYPE(c_int)(
						("_Z6getMinv", lib),
						()
					) (c_int) CFUNCTYPE c_int ("_Z6getMinv", lib) "_Z6getMinv" lib () self self def main():
	N, Q = map(int, sys.stdin.readline().split())
	tmp = [tuple(map(int, sys.stdin.readline().split())) for _ in range(N)]
	stx = [(s - x, 1, x) for s, t, x in tmp] + [(t - x, -1, x) for s, t, x in tmp]
	stx.sort()
	
	D = [int(sys.stdin.readline()) for _ in range(Q)] 
	ans = [-1]*Q

	idx = 0
	stx_len = len(stx)
	se = CppSet()
	for i, d in enumerate(D):
		while idx < stx_len:
			t, com, x = stx[idx]
			if t > d:
				break
			if com == 1:
				se.add(x)
			else:
				se.remove(x)
			idx += 1
		ans[i] = (-1 if se.empty() else se.getMin())

	print(*ans, sep='\n') main N, Q = map(int, sys.stdin.readline().split()) N map(int, sys.stdin.readline().split()) map int sys.stdin.readline().split() sys.stdin.readline().split sys.stdin.readline() sys.stdin.readline sys.stdin sys stdin readline split Q tuple(map(int, sys.stdin.readline().split())) for _ in range(N) for _ in range(N) _ range(N) range N for _ in range(N) tuple(map(int, sys.stdin.readline().split())) tuple map(int, sys.stdin.readline().split()) map int sys.stdin.readline().split() sys.stdin.readline().split sys.stdin.readline() sys.stdin.readline sys.stdin sys stdin readline split tmp = [tuple(map(int, sys.stdin.readline().split())) for _ in range(N)] tmp [tuple(map(int, sys.stdin.readline().split())) for _ in range(N)] (s - x, 1, x) for s, t, x in tmp for s, t, x in tmp s t x tmp for s, t, x in tmp (s - x, 1, x) s - x s x 1 x stx = [(s - x, 1, x) for s, t, x in tmp] + [(t - x, -1, x) for s, t, x in tmp] stx [(s - x, 1, x) for s, t, x in tmp] + [(t - x, -1, x) for s, t, x in tmp] [(s - x, 1, x) for s, t, x in tmp] [(t - x, -1, x) for s, t, x in tmp] stx.sort() stx.sort stx sort int(sys.stdin.readline()) for _ in range(Q) for _ in range(Q) _ range(Q) range Q for _ in range(Q) int(sys.stdin.readline()) int sys.stdin.readline() sys.stdin.readline sys.stdin sys stdin readline D = [int(sys.stdin.readline()) for _ in range(Q)] D [int(sys.stdin.readline()) for _ in range(Q)] ans = [-1]*Q ans [-1]*Q [-1] -1 Q idx = 0 idx 0 stx_len = len(stx) stx_len len(stx) len stx se = CppSet() se CppSet() CppSet for i, d in enumerate(D):
		while idx < stx_len:
			t, com, x = stx[idx]
			if t > d:
				break
			if com == 1:
				se.add(x)
			else:
				se.remove(x)
			idx += 1
		ans[i] = (-1 if se.empty() else se.getMin())

	 i d enumerate(D) enumerate D while idx < stx_len:
			t, com, x = stx[idx]
			if t > d:
				break
			if com == 1:
				se.add(x)
			else:
				se.remove(x)
			idx += 1
		 idx < stx_len idx stx_len t, com, x = stx[idx] t stx[idx] stx idx com x if t > d:
				break
			 t > d t d break if com == 1:
				se.add(x)
			else:
				se.remove(x)
			 com == 1 com 1 se.add(x) se.add se add x se.remove(x) se.remove se remove x idx += 1 idx 1 ans[i] = (-1 if se.empty() else se.getMin()) ans[i] ans i -1 if se.empty() else se.getMin() se.empty() se.empty se empty -1 se.getMin() se.getMin se getMin print(*ans, sep='\n') print *ans ans sep='\n' sep '\n' if __name__ == "__main__":
	main() __name__ == "__main__" __name__ "__main__" main() main class CppSet:
	# オブジェクトが作られた数
	# オブジェクトごとに共有ライブラリを作成する必要があるので、counterで共有ライブラリにIDを割り振る
	counter = 0

	def __init__(self):
		# 共有ライブラリを作成して、それを呼び出す
		lib_name = './hoge{}.so'.format(CppSet.counter)

		# C++のソースを書き出します
		code_file_name = "tmp.cpp"
		with open(code_file_name, "w") as f:
			f.write(set_code)

		CppSet.counter += 1 

		# 共有ライブラリを作成。-std=c++14とかにすると動かなくなる
		sp.Popen(['g++', '-fPIC', '-shared', '-std=c++11', '-O2', code_file_name, '-o', lib_name]).communicate()

		# Pythonから共有ライブラリを召喚します
		# 召喚方法は https://over80.hatenadiary.jp/entry/20150816/pure_python_inotify を参照
		# 上で書いたコードのgetMinとかの関数が、共有ライブラリではシンボルに変換される(マングリング)らしい
		# なので、シンボルから関数名を得るためにデマングルとかいうやつをやります
		# 最終的にシンボルと関数の対応関係を使って、各関数を召喚します
		# マングリング: https://albel06.hatenablog.com/entry/2016/03/17/180000
		# デマングル: http://0xcc.net/blog/archives/000095.html
		lib = CDLL(lib_name)
		self.add = getattr(lib, "_Z3addi")
		self.find = CFUNCTYPE(c_bool, c_int)(
						("_Z4findi", lib),
						((1, "x"), )
					)
		self.remove = getattr(lib, "_Z6removei")
		self.empty = CFUNCTYPE(c_bool)(
						("_Z5emptyv", lib),
						()
					)

		self.getMin = CFUNCTYPE(c_int)(
						("_Z6getMinv", lib),
						()
					) class CppSet:
	# オブジェクトが作られた数
	# オブジェクトごとに共有ライブラリを作成する必要があるので、counterで共有ライブラリにIDを割り振る
	counter = 0

	def __init__(self):
		# 共有ライブラリを作成して、それを呼び出す
		lib_name = './hoge{}.so'.format(CppSet.counter)

		# C++のソースを書き出します
		code_file_name = "tmp.cpp"
		with open(code_file_name, "w") as f:
			f.write(set_code)

		CppSet.counter += 1 

		# 共有ライブラリを作成。-std=c++14とかにすると動かなくなる
		sp.Popen(['g++', '-fPIC', '-shared', '-std=c++11', '-O2', code_file_name, '-o', lib_name]).communicate()

		# Pythonから共有ライブラリを召喚します
		# 召喚方法は https://over80.hatenadiary.jp/entry/20150816/pure_python_inotify を参照
		# 上で書いたコードのgetMinとかの関数が、共有ライブラリではシンボルに変換される(マングリング)らしい
		# なので、シンボルから関数名を得るためにデマングルとかいうやつをやります
		# 最終的にシンボルと関数の対応関係を使って、各関数を召喚します
		# マングリング: https://albel06.hatenablog.com/entry/2016/03/17/180000
		# デマングル: http://0xcc.net/blog/archives/000095.html
		lib = CDLL(lib_name)
		self.add = getattr(lib, "_Z3addi")
		self.find = CFUNCTYPE(c_bool, c_int)(
						("_Z4findi", lib),
						((1, "x"), )
					)
		self.remove = getattr(lib, "_Z6removei")
		self.empty = CFUNCTYPE(c_bool)(
						("_Z5emptyv", lib),
						()
					)

		self.getMin = CFUNCTYPE(c_int)(
						("_Z6getMinv", lib),
						()
					) CppSet def main():
	N, Q = map(int, sys.stdin.readline().split())
	tmp = [tuple(map(int, sys.stdin.readline().split())) for _ in range(N)]
	stx = [(s - x, 1, x) for s, t, x in tmp] + [(t - x, -1, x) for s, t, x in tmp]
	stx.sort()
	
	D = [int(sys.stdin.readline()) for _ in range(Q)] 
	ans = [-1]*Q

	idx = 0
	stx_len = len(stx)
	se = CppSet()
	for i, d in enumerate(D):
		while idx < stx_len:
			t, com, x = stx[idx]
			if t > d:
				break
			if com == 1:
				se.add(x)
			else:
				se.remove(x)
			idx += 1
		ans[i] = (-1 if se.empty() else se.getMin())

	print(*ans, sep='\n') def main():
	N, Q = map(int, sys.stdin.readline().split())
	tmp = [tuple(map(int, sys.stdin.readline().split())) for _ in range(N)]
	stx = [(s - x, 1, x) for s, t, x in tmp] + [(t - x, -1, x) for s, t, x in tmp]
	stx.sort()
	
	D = [int(sys.stdin.readline()) for _ in range(Q)] 
	ans = [-1]*Q

	idx = 0
	stx_len = len(stx)
	se = CppSet()
	for i, d in enumerate(D):
		while idx < stx_len:
			t, com, x = stx[idx]
			if t > d:
				break
			if com == 1:
				se.add(x)
			else:
				se.remove(x)
			idx += 1
		ans[i] = (-1 if se.empty() else se.getMin())

	print(*ans, sep='\n') main set_code = r"""
#include <set>

std::set<int> s;

void add(int x) {
    s.insert(x);
}

bool find(int x) {
    return s.find(x) != s.end();
}

void remove(int x) {
    s.erase(x);
}

bool empty() {
	return s.empty();
}

int getMin() {
	return *s.begin();
}
""" r"""
#include <set>

std::set<int> s;

void add(int x) {
    s.insert(x);
}

bool find(int x) {
    return s.find(x) != s.end();
}

void remove(int x) {
    s.erase(x);
}

bool empty() {
	return s.empty();
}

int getMin() {
	return *s.begin();
}
""" set_code
from ctypes import *
import subprocess as sp
from operator import itemgetter
import sys
import os.path

# C++のstd::setのラッパー。こいつを呼び出す。
set_code = r"""
#include <set>

std::set<int> s;

void add(int x) {
    s.insert(x);
}

bool find(int x) {
    return s.find(x) != s.end();
}

void remove(int x) {
    s.erase(x);
}

bool empty() {
	return s.empty();
}

int getMin() {
	return *s.begin();
}
"""

class CppSet:
	# オブジェクトが作られた数
	# オブジェクトごとに共有ライブラリを作成する必要があるので、counterで共有ライブラリにIDを割り振る
	counter = 0

	def __init__(self):
		# 共有ライブラリを作成して、それを呼び出す
		lib_name = './hoge{}.so'.format(CppSet.counter)

		# C++のソースを書き出します
		code_file_name = "tmp.cpp"
		with open(code_file_name, "w") as f:
			f.write(set_code)

		CppSet.counter += 1 

		# 共有ライブラリを作成。-std=c++14とかにすると動かなくなる
		sp.Popen(['g++', '-fPIC', '-shared', '-std=c++11', '-O2', code_file_name, '-o', lib_name]).communicate()

		# Pythonから共有ライブラリを召喚します
		# 召喚方法は https://over80.hatenadiary.jp/entry/20150816/pure_python_inotify を参照
		# 上で書いたコードのgetMinとかの関数が、共有ライブラリではシンボルに変換される(マングリング)らしい
		# なので、シンボルから関数名を得るためにデマングルとかいうやつをやります
		# 最終的にシンボルと関数の対応関係を使って、各関数を召喚します
		# マングリング: https://albel06.hatenablog.com/entry/2016/03/17/180000
		# デマングル: http://0xcc.net/blog/archives/000095.html
		lib = CDLL(lib_name)
		self.add = getattr(lib, "_Z3addi")
		self.find = CFUNCTYPE(c_bool, c_int)(
						("_Z4findi", lib),
						((1, "x"), )
					)
		self.remove = getattr(lib, "_Z6removei")
		self.empty = CFUNCTYPE(c_bool)(
						("_Z5emptyv", lib),
						()
					)

		self.getMin = CFUNCTYPE(c_int)(
						("_Z6getMinv", lib),
						()
					)

def main():
	N, Q = map(int, sys.stdin.readline().split())
	tmp = [tuple(map(int, sys.stdin.readline().split())) for _ in range(N)]
	stx = [(s - x, 1, x) for s, t, x in tmp] + [(t - x, -1, x) for s, t, x in tmp]
	stx.sort()
	
	D = [int(sys.stdin.readline()) for _ in range(Q)] 
	ans = [-1]*Q

	idx = 0
	stx_len = len(stx)
	se = CppSet()
	for i, d in enumerate(D):
		while idx < stx_len:
			t, com, x = stx[idx]
			if t > d:
				break
			if com == 1:
				se.add(x)
			else:
				se.remove(x)
			idx += 1
		ans[i] = (-1 if se.empty() else se.getMin())

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

if __name__ == "__main__":
	main()
