#!/usr/bin/env pypy3

# université pierre et marie curie - c. dürr - 2017
# http://www-desir.lip6.fr/~durrc/Iut/cpa/tme6-arbresegments/

# Réservation dans une agence d'intérim
# algorithme: arbre de segments
# complexité: O(n log W)

from sys import stdin


class SegmentTree:
    """ maintient un tableau tab indicé de 0 à n-1.
    permet d'ajouter val à tous les éléments de tab[i:j]
    permet de demander max(tab[i:j])
    chaque opération en temps O(log n).
    pour raccourcir le code des deux opérations
    sont implémenté dans un seul query(i,j,val)
    qui ajoute val et retourne le max de tab[i:j].
    """

    def __init__(self, n):
        self.N = 1
        while self.N < n:
            self.N *= 2
        self.addval = [0] * (2 * self.N)
        self.maxval = [0] * (2 * self.N)

    def query(self, left, right, val=0):
        return self._query(left, right, val, 1, 0, self.N)

    def _query(self, left, right, val, i, left_i, right_i):
        """soient I les indices dans [left:right] et dans [left_i:right_i]
        ajoute val à tab[I] et retourne max tab[I]
        """
        if right <= left_i or right_i <= left:   # disjoint
            return float('-inf')     # élément neutre pour le maximum
        if left <= left_i and right_i <= right:   # inclus
            self.addval[i] += val
            self.maxval[i] += val
            return self.maxval[i]
        # sinon
        #              --- promesse : right_i - left_i est une puiss. de 2
        mid = (left_i + right_i) // 2
        x = self._query(left, right, val, 2 * i,     left_i, mid)
        y = self._query(left, right, val, 2 * i + 1, mid,    right_i)
        self.maxval[i] = max(self.maxval[2*i], self.maxval[2*i+1]) + self.addval[i]  # maint. invariant
        return max(x, y) + self.addval[i]

def readint():
    return int(stdin.readline())

def readints():
    return map(int, stdin.readline().split())

def test_segment_tree():
    T = SegmentTree(10)
    while True:
        print("> ", end='', flush=True)
        line = stdin.readline().split()
        if line[0] == "add":
            T.query(int(line[1]), int(line[2]), int(line[3]))
        elif line[0] == "max":
            print(T.query(int(line[1]), int(line[2])))
        elif line[0] == "?":
            # for i in range(T.N):
            #     print(T.query(i, i+1), end=' ')
            # print()
            print(T.addval)
            print(T.maxval)

# test_segment_tree()

n, width, height = readints()
tab = SegmentTree(width + 1)
answ = 0
for _ in range(n):
    x, w, h = readints()
    if tab.query(x, x + w, 0) + h <= height :
        tab.query(x, x + w, h)
        answ += 1
print(answ)
