Contributed by Yury Ostromentsky
Contributed by Quentin Schmerber
Contributed by Kirill Gluschenko
Contributed by Peiran Tan
Contributed by Pavel Kedich
Contributed by Adelina Shaydullina