Project 3 for cs 61b, shewchuk. Nikita Shah, Dake Ying, Ziyue Chen