basic data structure and algorithm