https://vu-ss.blogspot.com/2019/11/cs504-assignment-solution-fall.html