Author: Mikhalkevich Georgii.