// Функция для инициализации всех частей, заполнения списка частей,
    // определения расстояний между разрезами и занесением их в списки
    private static void GetPiecesAndCuts()
    {
        int lastX = -1, lastY = -1, lastZ = -1;
        for (int i = 0; i < n; i++)
        {
            Cuboid piece = new Cuboid();
            piece.Init();
            // Проверяем положение, которое занимает новая часть
            switch (piece.SpecialPosition)
            {
                // Часть не содержит никакую ось
                case 'N':
                    break;

                // Часть содержит начало координат
                // Добавляем соответсвующие ее размеры в начало списков,
                // описывающих расстояния между разрезами
                case 'F':
                    cutX.AddFirst(piece.GetDimension(0, 2));
                    cutY.AddFirst(piece.GetDimension(4, 2));
                    cutZ.AddFirst(piece.GetDimension(0, 4));
                    break;

                // Часть содержит ось X
                // Добавляем в список, описывающий расстояния между разрезами,
                // перпендикулярными оси X длину ребра, лежащего на этой оси
                case 'X':
                    cutX.AddLast(piece.GetDimension(0, 2));
                    break;
                case 'Y':
                    cutY.AddLast(piece.GetDimension(4, 2));
                    break;
                case 'Z':
                    cutZ.AddLast(piece.GetDimension(0, 4));
                    break;

                // Часть является последней по оси X, т.е. самой правой
                case 'R':
                    lastX = i;
                    break;
                case 'B':
                    lastY = i;
                    break;
                case 'U':
                    lastZ = i;
                    break;
            }
            pieces[i] = piece;
        }
        if (lastX != -1)
            cutX.AddLast(pieces[lastX].GetDimension(0, 2));
        if (lastY != -1)
            cutY.AddLast(pieces[lastY].GetDimension(4, 2));
        if (lastZ != -1)
            cutZ.AddLast(pieces[lastZ].GetDimension(0, 4));
    }