using System;
using System.Collections.Generic;
public class Test
{
public static void Main()
{
int x = 0;
example original_example = new example(0);
List<example> examples = new List<example>();
while (++x < 10)
{
examples.Add(new example(original_example, x));
}
foreach(example _example in examples)
Console.WriteLine(_example.number1 + " // " + _example.number2);
}
public class example
{
public int number1;
public int number2 { get { return (int)values["number"]; } }
public bool original = true;
Dictionary<string, object> values = new Dictionary<string,object>();
public example(int number)
{
original = true;
number1 = number;
values.Add("number", number);
}
public example(example original_example, int number)
{
original = false;
values = new Dictionary<string, object>(original_example.values);
values["number"] = number;
number1 = number;
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKICAgICAgICBpbnQgeCA9IDA7CgogICAgICAgIGV4YW1wbGUgb3JpZ2luYWxfZXhhbXBsZSA9IG5ldyBleGFtcGxlKDApOwoKICAgICAgICBMaXN0PGV4YW1wbGU+IGV4YW1wbGVzID0gbmV3IExpc3Q8ZXhhbXBsZT4oKTsKCiAgICAgICAgd2hpbGUgKCsreCA8IDEwKQogICAgICAgIHsKICAgICAgICAgICAgZXhhbXBsZXMuQWRkKG5ldyBleGFtcGxlKG9yaWdpbmFsX2V4YW1wbGUsIHgpKTsKICAgICAgICB9CgkJCgkJZm9yZWFjaChleGFtcGxlIF9leGFtcGxlIGluIGV4YW1wbGVzKQoJCSAgICBDb25zb2xlLldyaXRlTGluZShfZXhhbXBsZS5udW1iZXIxICsgIiAvLyAiICsgX2V4YW1wbGUubnVtYmVyMik7CgkJCgl9CgkKCXB1YmxpYyBjbGFzcyBleGFtcGxlCiAgICB7CiAgICAgICAgcHVibGljIGludCBudW1iZXIxOwogICAgICAgIHB1YmxpYyBpbnQgbnVtYmVyMiB7IGdldCB7IHJldHVybiAoaW50KXZhbHVlc1sibnVtYmVyIl07IH0gfQogICAgICAgIHB1YmxpYyBib29sIG9yaWdpbmFsID0gdHJ1ZTsKCiAgICAgICAgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4gdmFsdWVzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLG9iamVjdD4oKTsKCiAgICAgICAgcHVibGljIGV4YW1wbGUoaW50IG51bWJlcikKICAgICAgICB7CiAgICAgICAgICAgIG9yaWdpbmFsID0gdHJ1ZTsKICAgICAgICAgICAgbnVtYmVyMSA9IG51bWJlcjsKICAgICAgICAgICAgdmFsdWVzLkFkZCgibnVtYmVyIiwgbnVtYmVyKTsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBleGFtcGxlKGV4YW1wbGUgb3JpZ2luYWxfZXhhbXBsZSwgaW50IG51bWJlcikKICAgICAgICB7CiAgICAgICAgICAgIG9yaWdpbmFsID0gZmFsc2U7CiAgICAgICAgICAgIHZhbHVlcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PihvcmlnaW5hbF9leGFtcGxlLnZhbHVlcyk7CiAgICAgICAgICAgIHZhbHVlc1sibnVtYmVyIl0gPSBudW1iZXI7CiAgICAgICAgICAgIG51bWJlcjEgPSBudW1iZXI7CiAgICAgICAgfQogICAgfQp9