https://python.plainenglish.io/advanced-python-looping-concepts-with-the-itertools-module-b6a0873e74a6