Design a Parking Lot Systems. Should support different kind of vehicles and spots. Also provide an efficient algorithms to park the vehicles such that maximum number of vehicles are parked with minimum empty space.