using System; namespace Sierpinsky_Carpet { class Program { private bool[,] bits; public static void Main() { int level = int.Parse(Console.ReadLine()); Program p = new Program(); p.PrintSierpinskiCarpet(level); p.Dump(); } void PrintSierpinskiCarpet(int level) { int size = (int)(Math.Pow(3, level)); bits = new bool[size, size]; PrintSierpinskiCarpet(level, 0, 0); } void PrintSierpinskiCarpet(int level, int x, int y) { if (level == 0) bits[x, y] = true; else for (int i = 0; i < 9; i++) if (i != 4) PrintSierpinskiCarpet(level - 1, x * 3 + (i % 3), y * 3 + (i / 3)); } private void Dump() { int len = bits.GetUpperBound(0); for (int x = 0; x <= len; x++) { for (int y = 0; y <= len; y++) Dot(bits[x, y]); Console.WriteLine(); } } static void Dot(bool fill) { if (fill) Console.Write("::"); else Console.Write(" "); } } }