# take n, m, s inputs n, m = map(int, input().split()) s, k = map(int, input().split()) # find the ratio of value per unit weight # n materials = n-1 stages of machines machines = [[] for _ in range(n-1)] for _ in range(m): target, inp, out = map(int, input().split()) machines[target-1].append((inp, out, out/inp)) for i in range(n-1): layer_out = 0 sorted_machines = sorted(machines[i], key=lambda x: x[2], reverse=True) # greedily operate based on the greatest value per unit weight for inp, out, _ in sorted_machines: n = s // inp if out-inp > 0: n = min(n, (k - s - layer_out) // (out - inp)) n = max(0, n) layer_out += n * out s -= n * inp s = layer_out print(s)