public static void Main(string[] args)
Console.WriteLine("Число цветов");
var colorsCount = int.Parse(Console.ReadLine());
var colorsBuckets = Enumerable
Console.WriteLine("Число шашек цвета " + (c + 1));
return int.Parse(Console.ReadLine());
var checkersCount = colorsBuckets.Sum();
if (checkersCount > 80 ||
throw new InvalidOperationException();
for (var color = 0; color < colorsCount; color++)
if (colorsBuckets[color] > 0)
var node = new Node(color + 1);
if (!TryInsertNode(baseNode, node))
Console.WriteLine("Ответ: невозможно");
} while (colorsBuckets.Any(b => b > 0));
Console.WriteLine("Ответ: возможно");
Console.Write("Пример: -");
var iteratorNode = baseNode;
Console.Write(iteratorNode.Color);
iteratorNode = iteratorNode.Next;
} while (iteratorNode != baseNode);
private static bool TryInsertNode(Node baseNode, Node node)
var iteratorNode = baseNode;
iteratorNode = iteratorNode.Next;
if (TryInsertNodeBetween(node, prev, next)) return true;
} while (iteratorNode != baseNode);
private static bool TryInsertNodeBetween(Node node, Node prev, Node next)
if (node.Color == prev.Color ||
node.Color == next.Color)
public readonly int Color;