Let I1, I2, ..., I, be a set of closed intervals on the real line, with I; = [ai, b;]. Design an efficient greedy algorithm to compute the smallest set S of points such that each interval contains at least one point. Analyze the time complexity of your algorithm and prove that it always produces the optimal solution.