function max_non_overlapping(intervals):

   intervals.sort_by(end_time)
   count = 0
   last_end = -infinity
   for start, end in intervals:
      if start >= last_end:
        count += 1

        last_end = end
   return count        # same greedy pattern as activity selection
