import sys
def solve():
# 全ての入力を読み込み、空白で分割してリスト化
input_data = sys.stdin.read().split()
if not input_data:
return
# ジョブの数 n
n = int(input_data[0])
# ジョブ情報をリストに格納
# 各要素: [開始時刻, 終了時刻, 価値]
jobs = []
curr = 1
for _ in range(n):
s = int(input_data[curr])
f = int(input_data[curr + 1])
v = int(input_data[curr + 2])
jobs.append([s, f, v])
curr += 3
# 終了時刻(インデックス1)をキーに昇順ソート
# Pythonの sort() は「安定ソート」なので、終了時刻が同じ場合は入力順が維持されます
jobs.sort(key=lambda x: x[1])
# ジョブ番号を1から数えるため、リストの最初にダミー要素を追加
# これにより sorted_jobs[1] がソート後の最初のジョブになります
sorted_jobs = [[-1, -1, 0]] + jobs
# q(j) の値を計算して格納するリスト
q = [0] * (n + 1)
for j in range(1, n + 1):
sj = sorted_jobs[j][0] # ジョブ j の開始時刻
# ジョブ j より前のジョブ i (j-1, j-2, ..., 1) を逆順に探索
# 終了時刻 fi <= sj となる最大の i を探す
for i in range(j - 1, 0, -1):
fi = sorted_jobs[i][1] # ジョブ i の終了時刻
if fi <= sj:
q[j] = i
break
else:
# 見つからなかった場合は q[j] = 0 (初期値のまま)
q[j] = 0
# 指定された形式で出力
for j in range(1, n + 1):
print(f"q {j} = {q[j]}")
if __name__ == "__main__":
solve()
aW1wb3J0IHN5cwoKZGVmIHNvbHZlKCk6CiAgICAjIOWFqOOBpuOBruWFpeWKm+OCkuiqreOBv+i+vOOBv+OAgeepuueZveOBp+WIhuWJsuOBl+OBpuODquOCueODiOWMlgogICAgaW5wdXRfZGF0YSA9IHN5cy5zdGRpbi5yZWFkKCkuc3BsaXQoKQogICAgaWYgbm90IGlucHV0X2RhdGE6CiAgICAgICAgcmV0dXJuCiAgICAKICAgICMg44K444On44OW44Gu5pWwIG4KICAgIG4gPSBpbnQoaW5wdXRfZGF0YVswXSkKICAgIAogICAgIyDjgrjjg6fjg5bmg4XloLHjgpLjg6rjgrnjg4jjgavmoLzntI0KICAgICMg5ZCE6KaB57SgOiBb6ZaL5aeL5pmC5Yi7LCDntYLkuobmmYLliLssIOS+oeWApF0KICAgIGpvYnMgPSBbXQogICAgY3VyciA9IDEKICAgIGZvciBfIGluIHJhbmdlKG4pOgogICAgICAgIHMgPSBpbnQoaW5wdXRfZGF0YVtjdXJyXSkKICAgICAgICBmID0gaW50KGlucHV0X2RhdGFbY3VyciArIDFdKQogICAgICAgIHYgPSBpbnQoaW5wdXRfZGF0YVtjdXJyICsgMl0pCiAgICAgICAgam9icy5hcHBlbmQoW3MsIGYsIHZdKQogICAgICAgIGN1cnIgKz0gMwogICAgCiAgICAjIOe1guS6huaZguWIu++8iOOCpOODs+ODh+ODg+OCr+OCuTHvvInjgpLjgq3jg7zjgavmmIfpoIbjgr3jg7zjg4gKICAgICMgUHl0aG9u44GuIHNvcnQoKSDjga/jgIzlronlrprjgr3jg7zjg4jjgI3jgarjga7jgafjgIHntYLkuobmmYLliLvjgYzlkIzjgZjloLTlkIjjga/lhaXlipvpoIbjgYzntq3mjIHjgZXjgozjgb7jgZkKICAgIGpvYnMuc29ydChrZXk9bGFtYmRhIHg6IHhbMV0pCiAgICAKICAgICMg44K444On44OW55Wq5Y+344KSMeOBi+OCieaVsOOBiOOCi+OBn+OCgeOAgeODquOCueODiOOBruacgOWIneOBq+ODgOODn+ODvOimgee0oOOCkui/veWKoAogICAgIyDjgZPjgozjgavjgojjgoogc29ydGVkX2pvYnNbMV0g44GM44K944O844OI5b6M44Gu5pyA5Yid44Gu44K444On44OW44Gr44Gq44KK44G+44GZCiAgICBzb3J0ZWRfam9icyA9IFtbLTEsIC0xLCAwXV0gKyBqb2JzCiAgICAKICAgICMgcShqKSDjga7lgKTjgpLoqIjnrpfjgZfjgabmoLzntI3jgZnjgovjg6rjgrnjg4gKICAgIHEgPSBbMF0gKiAobiArIDEpCiAgICAKICAgIGZvciBqIGluIHJhbmdlKDEsIG4gKyAxKToKICAgICAgICBzaiA9IHNvcnRlZF9qb2JzW2pdWzBdICAjIOOCuOODp+ODliBqIOOBrumWi+Wni+aZguWIuwogICAgICAgIAogICAgICAgICMg44K444On44OWIGog44KI44KK5YmN44Gu44K444On44OWIGkgKGotMSwgai0yLCAuLi4sIDEpIOOCkumAhumghuOBq+aOoue0ogogICAgICAgICMg57WC5LqG5pmC5Yi7IGZpIDw9IHNqIOOBqOOBquOCi+acgOWkp+OBriBpIOOCkuaOouOBmQogICAgICAgIGZvciBpIGluIHJhbmdlKGogLSAxLCAwLCAtMSk6CiAgICAgICAgICAgIGZpID0gc29ydGVkX2pvYnNbaV1bMV0gICMg44K444On44OWIGkg44Gu57WC5LqG5pmC5Yi7CiAgICAgICAgICAgIGlmIGZpIDw9IHNqOgogICAgICAgICAgICAgICAgcVtqXSA9IGkKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyDopovjgaTjgYvjgonjgarjgYvjgaPjgZ/loLTlkIjjga8gcVtqXSA9IDAgKOWIneacn+WApOOBruOBvuOBvikKICAgICAgICAgICAgcVtqXSA9IDAKICAgICAgICAgICAgCiAgICAjIOaMh+WumuOBleOCjOOBn+W9ouW8j+OBp+WHuuWKmwogICAgZm9yIGogaW4gcmFuZ2UoMSwgbiArIDEpOgogICAgICAgIHByaW50KGYicSB7an0gPSB7cVtqXX0iKQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIHNvbHZlKCk=