Contributed by Ignasi Àvila Padró
Contributed by Irawandhani Kamarga
Contributed by Adelina Shaydullina