using System;
interface IWrapper
{
void Print();
}
class Wrapper<T> : IWrapper
{
T t;
public Wrapper(T t) { this.t = t; }
public void Print() { Console.WriteLine("Wrapper <" + typeof(T).Name + ">"); }
}
class Program
{
static public void Print<T>(T t)
{
if (t is IWrapper)
{
((IWrapper)t).Print();
}
else
{
Print(new Wrapper<T>(t));
}
}
static void Main(string[] args)
{
Print(0);
}
}
dXNpbmcgU3lzdGVtOwoKaW50ZXJmYWNlIElXcmFwcGVyCnsKICAgIHZvaWQgUHJpbnQoKTsKfQoKY2xhc3MgV3JhcHBlcjxUPiA6IElXcmFwcGVyCnsKICAgIFQgdDsKICAgIHB1YmxpYyBXcmFwcGVyKFQgdCkgeyB0aGlzLnQgPSB0OyB9CiAgICBwdWJsaWMgdm9pZCBQcmludCgpIHsgQ29uc29sZS5Xcml0ZUxpbmUoIldyYXBwZXIgPCIgKyB0eXBlb2YoVCkuTmFtZSArICI+Iik7IH0KfQoKY2xhc3MgUHJvZ3JhbQp7CiAgICBzdGF0aWMgcHVibGljIHZvaWQgUHJpbnQ8VD4oVCB0KQogICAgewogICAgICAgIGlmICh0IGlzIElXcmFwcGVyKQogICAgICAgIHsKICAgICAgICAgICAgKChJV3JhcHBlcil0KS5QcmludCgpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBQcmludChuZXcgV3JhcHBlcjxUPih0KSk7CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgIHsKICAgICAgICBQcmludCgwKTsKICAgIH0KfQo=