Все цвета занумеруем вычетами из Z_k. Каждый из умников легко сосчитает сумму цветов всех шапок впереди стоящих по модулю k. Последний в колонне, отвечая первым называет эту сумму. Каждый из впереди стоящих вычитает из названной суммы, ту сумму, которую он видит впереди себя. Второй с конца при этом получит цвет своей шапки. Все последующие вычитают ответы умников из текущей суммы цветов за ним стоящих товарищей включая его самого получат в результате цвет своей шапки, когда до них дойдет очередь. Иначе говоря, имеем систему уравнений треугольного вида с коэффициентами 0 и 1.