using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
string[] tokens = Console.ReadLine().Split(' ');
int n = Convert.ToInt32(tokens[0]);
int t = 0;
int[] t1 = new int[40];
int[] t2 = new int[40];
int[] t3 = new int[40];
int count = 1; // счетчик для перебора токенов
//ввод времени в массивы
for (int i = 0; i < n; i++)
{
t1[i] = Convert.ToInt32(tokens[count++]);
t2[i] = Convert.ToInt32(tokens[count++]);
t3[i] = Convert.ToInt32(tokens[count++]);
}
//сортировка от меньшего к большему времени подготовки
for (int i = 0; i < n; i++)
{
for (int k = 0; k < n; k++)
{
if (t1[i] < t1[k])
{
int temp;
temp = t1[i];
t1[i] = t1[k];
t1[k] = temp;
temp = t2[i];
t2[i] = t2[k];
t2[k] = temp;
temp = t3[i];
t3[i] = t3[k];
t3[k] = temp;
}
}
}
//отсчет времени подготовки и ответа первого студента
t = t1[0] + t2[0];
//если следующему студенту нехватило времени на подготовку,
//значит его время подготовки и ответа выходят в общее время
for (int i = 1; i < n; i++)
{
if (t1[i] <= t)
{
t += t2[i];
}
else
{
t = t1[i] + t2[i];
}
}
//сравниваем общее время и время запланированного начала ответа последнего студента,
//если времени достаточно выводится 0, иначе выводится необходимое лишнее время
if (t <= t3[n - 1])
{
Console.WriteLine("0");
}
else
{
Console.WriteLine(t - t3[n - 1]);
}
}
}
}