Новогодняя задача: помогите Тирексу поставить и нарядить елочку

Условие
Сисадмин Тирекс засиделся допоздна и не успел не то что нарядить елку, но даже купить ее! У него нет главного символа праздника, но есть лапки, компьютер, IDE, технический склад ума и знание Python.
Задача
Помоги Тирексу вывести в консоли наряженную елку на любимом языке программирования. Педантичный Тирекс предъявляет следующие требования:
на вход программа получает два числа: rows отвечает за высоту елки в строчках (не менее трех), freq — за частоту появления украшений.
ветки елки — символ *.
игрушки — символы о, О, @ и 0.
елка имеет ствол из трех символов | и стоит на полу из символов _.
ветви елки расположены «ступенями»: первая состоит из трех строк, каждая следующая ниже — на одну больше.
первая строка следующей ниже «ступени» должна иметь на два символа меньше, чем последняя строка предыдущей.
елка должна иметь границы в виде символов / и \.
между двумя украшениями по горизонтали должна быть минимум одна ветка.
украшения не должны висеть на границе елки (они же упадут!).
Бонусная задача
вывести снег символом . (точка).
раскрасить елку зеленым, фон — синим, игрушки — разными цветами (кроме зеленого и синего), снег — белым.
Попробуйте решить задачу самостоятельно и делитесь своими идеями в комментариях. А вариант ответа Тирекса ищите в Академии Selectel.