1. Given an unsorted array, find all possible pairs which sum to to a given number with log(n) complexity
2. Given an array of strings, find all possible possible concatenations of strings. e.g., for a, b, c, d output should be ab, ac, ad, bc, bd, cd, abc, abd, bcd
3. Design a stack which will do push, pop and min element in O(1) time