import sys def get_best_price(start, end, cities, cities_cost): best_price = cities_cost[end] for item in cities[start]: if item in cities[end]: price = - cities[start][item] + cities[end][item] + cities_cost[end] # print(start, end, cities[start][item] , cities[end][item] , cities_cost[end]) # print(price) best_price = max(best_price, price) return best_price def main(cities, cities_cost): cities_cost[-1] = 0 for starting_city in range(len(cities)-2, -1, -1): for ending_city in range(starting_city +1, min(len(cities), starting_city + 50)): cities_cost[starting_city] = max(cities_cost[starting_city], get_best_price(starting_city, ending_city, cities, cities_cost)) # print(cities_cost) return cities_cost[0] if __name__ == '__main__': N = int(input()) cities = [] for i in range(N): cities.append(dict()) cities_cost = [-1] * N for i in range(N): num_cranes = int(input()) for x in range(num_cranes): key, value = [int(c) for c in sys.stdin.readline().strip("\n").split()] # print(key, value) cities[i][key] = value # print(cities) # print() print(main(cities, cities_cost)) # print(l)