https://1library.net/document/z1glp93z-applied-discrete-structures.html