	abstract class myText
	{
		public myText(){}
		public abstract string Print();
	};

	class SimpleText:myText
	{
		public SimpleText():base()
		{
		}
		public override string Print()
		{
			return "Simple Text";
		}
	};
	
	abstract class Decorator:myText
	{	public myText obj1;
		public Decorator():base(){}
	};
	class Text_with_brecets1:Decorator
	{
		public Text_with_brecets1(myText _obj):base()
		{
			obj1=_obj;
		}
		public override string Print()
		{
			return "("+obj1.Print()+")";
		}
	};

	class Text_with_brecets2:Decorator
	{
		public Text_with_brecets2(myText _obj):base()
		{
			obj1=_obj;
		}
		public override string Print()
		{
			return "[["+obj1.Print()+"]]";
		}
	};