import java.io.*;
import java.util.*;

public class mineral_mb_orig {
    private static record Machine(int in, int out) {}

    public static void main(String[] args) throws IOException {
        try (Input in = new Input()) {
            int n = in.nextInt();
            int m = in.nextInt();
            int s = in.nextInt();
            int k = in.nextInt();

            @SuppressWarnings({"unchecked"})
            List<Machine>[] machines = new List[n - 1];
            for (int i = 0; i < machines.length; ++i) {
                machines[i] = new ArrayList<>();
            }

            for (int i = 0; i < m; ++i) {
                int src = in.nextInt() - 1;
                int mIn = in.nextInt();
                int mOut = in.nextInt();
                machines[src].add(new Machine(mIn, mOut));
            }

            int[] next = new int[k + 1];
            int[] prev = new int[k + 1];
            for (int i = 0; i <= k; ++i) next[i] = i;

            for (int stage = n - 2; stage >= 0; --stage) {
                prev[0] = 0;
                for (int am = 1; am <= k; ++am) {
                    prev[am] = 0;
                    for (Machine mach : machines[stage]) {
                        if (mach.in <= am) {
                            int update = Math.min(k, mach.out + prev[am - mach.in]);
                            prev[am] = Math.max(prev[am], update);
                        }
                    }
                }
                for (int am = 1; am <= k; ++am) {
                    prev[am] = next[prev[am]];
                }
                int[] tmp = next; next = prev; prev = tmp;
            }
            System.out.println(next[s]);
        }
    }

    private static class Input implements Closeable {
        private final BufferedReader in;
        private StringTokenizer st;

        Input() throws IOException {
            in = new BufferedReader(new InputStreamReader(System.in));
            st = new StringTokenizer(in.readLine());
        }

        int nextInt() throws IOException {
            while (!st.hasMoreTokens()) {
                st = new StringTokenizer(in.readLine());
            }
            return Integer.parseInt(st.nextToken());
        }

        public void close() throws IOException {
            in.close();
        }
    }
}
