Algorithms for Geometric Covering and Piercing Problems