'use strict';
function main(input) {
  input = input.split("\n");
  const sNum = input[0];
  let stations = [];
  let rtn = [];

  for(let i=1; i<sNum; i++){
    stations.push(input[i].split(" "));
  }
  for(let i=0; i<stations.length; i++){
      stations[i] = stations[i].map(n => Number(n));
  }
  for(let i=0; i<stations.length; i++){
    // stations[i] = stations[i].map(n => Number(n));
    let total = 0;
    for(let j=i; j<stations.length; j++){
        // 到着した駅の開通式開始までの時刻が到着時刻より大きい
        if(total < stations[j][1]){
            total = stations[j][1]; // 発車時刻を待つ
        // 到着した駅の発車時刻が到着時刻より大きい
        }else if(total < stations[j][2]){
            total = stations[j][1]; // 発車時刻を待つ
        }else if(total % stations[j][2] != 0){
            // 到着時に発車間隔が合わなければ、 合わない分だけ待つ
            total += stations[j][2] - (total % stations[j][2])
        }
        total += stations[j][0]; // 乗車時間を追加
    }
    rtn.push(total);
  }
  rtn.push(0);
  console.log(rtn.join("\n"));
}
main(require('fs').readFileSync('/dev/stdin', 'utf8'));
