Smolayninov, Krayshkin, Shatilin. Added source code and diagrams