# 駅jjを出発する時刻は、

#S[j]+F[j]×kS[j]+F[j]×kとなる(kは車両数)。

#出発する時刻は現在時刻tt以上である必要があるので、

#S[j]+F[j]×k≥tS[j]+F[j]×k≥tとする。 式変形



N = int(eval(input()))

C = [0]*(N+1)

S = [0]*(N+1)

F = [0]*(N+1)

for i in range(N-1):

  c, s, f = list(map(int, input().split()))

  C[i] = c

  S[i] = s

  F[i] = f



for i in range(N): # 駅iを始点とする

  t = 0 # 現在時刻

  for j in range(i, N-1):

    # kはマイナスの値になる場合もあるので、その時はk=0k=0にする。

    k = max(0, (t-S[j]+F[j]-1) // F[j])

    t = S[j] + F[j]*k + C[j]

  print(t)







# 駅jjを出発する時刻は、

#S[j]+F[j]×kS[j]+F[j]×kとなる(kは車両数)。

#出発する時刻は現在時刻tt以上である必要があるので、

#S[j]+F[j]×k≥tS[j]+F[j]×k≥tとする。 式変形

import math

N = int(eval(input()))

CSF = [list(map(int, input().split())) for _ in range(N-1)]



for i in range(N): # 駅iを始点とする

  t = 0 # 現在時刻

  for j in range(i, N-1):

    c, s, f = CSF[j]

    if t <= s: # 始発がまだ

      t = s+c

    else: # 始発以降      

      t = math.ceil(t / f) * f + c

  print(t)
# 駅jjを出発する時刻は、
# S[j]+F[j]×kS[j]+F[j]×kとなる(kは車両数)。
# 出発する時刻は現在時刻tt以上である必要があるので、
# S[j]+F[j]×k≥tS[j]+F[j]×k≥tとする。 式変形
N = int(eval(input()))
C = [0] * (N + 1)
S = [0] * (N + 1)
F = [0] * (N + 1)
for i in range(N - 1):
    c, s, f = list(map(int, input().split()))
    C[i] = c
    S[i] = s
    F[i] = f
for i in range(N):  # 駅iを始点とする
    t = 0  # 現在時刻
    for j in range(i, N - 1):
        # kはマイナスの値になる場合もあるので、その時はk=0k=0にする。
        k = max(0, (t - S[j] + F[j] - 1) // F[j])
        t = S[j] + F[j] * k + C[j]
    print(t)

# 駅jjを出発する時刻は、
# S[j]+F[j]×kS[j]+F[j]×kとなる(kは車両数)。
# 出発する時刻は現在時刻tt以上である必要があるので、
# S[j]+F[j]×k≥tS[j]+F[j]×k≥tとする。 式変形
import math

N = int(eval(input()))
CSF = [list(map(int, input().split())) for _ in range(N - 1)]
for i in range(N):  # 駅iを始点とする
    t = 0  # 現在時刻
    for j in range(i, N - 1):
        c, s, f = CSF[j]
        if t <= s:  # 始発がまだ
            t = s + c
        else:  # 始発以降
            t = math.ceil(t / f) * f + c
    print(t)

+import math + -C = [0] * (N + 1) -S = [0] * (N + 1) -F = [0] * (N + 1) -for i in range(N - 1): -    c, s, f = list(map(int, input().split())) -    C[i] = c -    S[i] = s -    F[i] = f +CSF = [list(map(int, input().split())) for _ in range(N - 1)] -        # kはマイナスの値になる場合もあるので、その時はk=0k=0にする。 -        k = max(0, (t - S[j] + F[j] - 1) // F[j]) -        t = S[j] + F[j] * k + C[j] +        c, s, f = CSF[j] +        if t <= s:  # 始発がまだ +            t = s + c +        else:  # 始発以降 +            t = math.ceil(t / f) * f + c