Design an implementation of a data structure S that supports the following operations:
Insert(S, x): insert the key x into S only if it is not already there.
Delete(S, x): delete the key x from S (if it is there).
FindSmallest(S, k): ?nd the k-th smallest key in S.
All these operations should take O(log n) time in the worst case, where n is the number of elements in S.