using System;
using System.Text;
public class Foo {
public Foo(int v) {
Value = v;
}
public int Value {get;}
public static Bar operator*(string s, Foo f) {
var sb = new StringBuilder();
for (var i = 0; i < f.Value; i++) sb.Append(s);
return new Bar(sb.ToString());
}
}
public class Bar {
public Bar(string s) {
Value = s;
}
public string Value {get;}
public static string operator*(Bar b, int c) {
var sb = new StringBuilder();
for (var i = 0; i < c; i++) sb.Append(b.Value);
return sb.ToString();
}
public static implicit operator string(Bar b) => b.Value;
public override string ToString() => Value;
}
public class Test
{
public static void Main()
{
var u = new Foo(5);
Console.WriteLine("!" * u);
Console.WriteLine("!" * u * 4);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dDsKCnB1YmxpYyBjbGFzcyBGb28gewoJcHVibGljIEZvbyhpbnQgdikgewoJCVZhbHVlID0gdjsKCX0KCQoJcHVibGljIGludCBWYWx1ZSB7Z2V0O30KCXB1YmxpYyBzdGF0aWMgQmFyIG9wZXJhdG9yKihzdHJpbmcgcywgRm9vIGYpIHsKCQl2YXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigpOwoJCWZvciAodmFyIGkgPSAwOyBpIDwgZi5WYWx1ZTsgaSsrKSBzYi5BcHBlbmQocyk7CgkJcmV0dXJuIG5ldyBCYXIoc2IuVG9TdHJpbmcoKSk7Cgl9Cn0KCnB1YmxpYyBjbGFzcyBCYXIgewoJcHVibGljIEJhcihzdHJpbmcgcykgewoJCVZhbHVlID0gczsKCX0KCQoJcHVibGljIHN0cmluZyBWYWx1ZSB7Z2V0O30KCXB1YmxpYyBzdGF0aWMgc3RyaW5nIG9wZXJhdG9yKihCYXIgYiwgaW50IGMpIHsKCQl2YXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigpOwoJCWZvciAodmFyIGkgPSAwOyBpIDwgYzsgaSsrKSBzYi5BcHBlbmQoYi5WYWx1ZSk7CgkJcmV0dXJuIHNiLlRvU3RyaW5nKCk7Cgl9CglwdWJsaWMgc3RhdGljIGltcGxpY2l0IG9wZXJhdG9yIHN0cmluZyhCYXIgYikgPT4gYi5WYWx1ZTsKCXB1YmxpYyBvdmVycmlkZSBzdHJpbmcgVG9TdHJpbmcoKSA9PiBWYWx1ZTsKfQoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciB1ID0gbmV3IEZvbyg1KTsKCQlDb25zb2xlLldyaXRlTGluZSgiISIgKiB1KTsKCQlDb25zb2xlLldyaXRlTGluZSgiISIgKiB1ICogNCk7Cgl9Cn0=