http://poj.org/problem?id=2251