Нам нужно перебрать все вариации id. Получить все возможные переборы.
1-1-1
1-2-1
1-3-1
1-1-2
1-1-3
1-1-4
2-2-2
...
Другими словами создать такого образа максимум переборок, чтобы впоследствии можно было уже работать с другими ключами, сравнивать их, и вообще использовать :)
Что такое n - вы рассказали, а что такое d и p - нет.
1-1-1
1-2-1
1-3-1
1-1-2
1-1-3
1-1-4
2-2-2
Что обозначают каждые из этих столбцов чисел?
По хорошему, чтобы сделать преобразование, то мало входных и выходных данных, нужны правила преобразования. Прежде чем писать код, их явным образом описывают и сверяют с тестовой выборкой. Без них никуда, если у вас не предполагается эти выборки загружать в нейронную сеть.