from itertools import product

n = 8
k = 3

correct = []
incorrect = []
for subsetIndexes in product(range(k), repeat = n):
	partition = [[] for _ in range(k)]
	for element, subsetIndex in enumerate(subsetIndexes, 1):
		partition[subsetIndex].append(element)
	if any(len(subset) == 0 for subset in partition):
		incorrect.append(partition)
	else:
		correct.append(partition)
		
print("correct = {0}".format(len(correct)))
#for i, partition in enumerate(correct, 1):
#	print("{0:4}. {1}".format(i, partition))

print("incorrect = {0}".format(len(incorrect)))
for i, partition in enumerate(incorrect, 1):
	print("{0:4}. {1}".format(i, partition))