http://leetcode.com/onlinejudge#question_113
http://leetcode.com/onlinejudge#question_111