using System;
class Program
{
static void Main(string[] args)
{
MyArray fruit = new MyArray(-2, 1);
fruit[-2] = "Apple";
fruit[-1] = "Orange";
fruit[0] = "Banana";
fruit[1] = "Blackcurrant";
Console.WriteLine(fruit[-1]); // Outputs "Orange"
Console.WriteLine(fruit[0]); // Outputs "Banana"
Console.WriteLine(fruit[-1,0]); // Output "O"
}
}
class MyArray
{
int _lowerBound;
int _upperBound;
string[] _items;
public MyArray(int lowerBound, int upperBound)
{
_lowerBound = lowerBound;
_upperBound = upperBound;
_items = new string[1 + upperBound - lowerBound];
}
public string this[int index]
{
get { return _items[index - _lowerBound]; }
set { _items[index - _lowerBound] = value; }
}
public string this[int word, int position]
{
get { return this[word].Substring(position, 1); }
}
}
dXNpbmcgU3lzdGVtOwoKY2xhc3MgUHJvZ3JhbQp7CiAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICB7CiAgICAgICAgTXlBcnJheSBmcnVpdCA9IG5ldyBNeUFycmF5KC0yLCAxKTsKICAgICAgICBmcnVpdFstMl0gPSAiQXBwbGUiOwogICAgICAgIGZydWl0Wy0xXSA9ICJPcmFuZ2UiOwogICAgICAgIGZydWl0WzBdID0gIkJhbmFuYSI7CiAgICAgICAgZnJ1aXRbMV0gPSAiQmxhY2tjdXJyYW50IjsKICAgICAgICBDb25zb2xlLldyaXRlTGluZShmcnVpdFstMV0pOyAgICAgICAvLyBPdXRwdXRzICJPcmFuZ2UiCiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoZnJ1aXRbMF0pOyAgICAgICAgLy8gT3V0cHV0cyAiQmFuYW5hIgogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKGZydWl0Wy0xLDBdKTsgICAgIC8vIE91dHB1dCAiTyIKICAgIH0KfQoKY2xhc3MgTXlBcnJheQp7CiAgICBpbnQgX2xvd2VyQm91bmQ7CiAgICBpbnQgX3VwcGVyQm91bmQ7CiAgICBzdHJpbmdbXSBfaXRlbXM7CgogICAgcHVibGljIE15QXJyYXkoaW50IGxvd2VyQm91bmQsIGludCB1cHBlckJvdW5kKQogICAgewogICAgICAgIF9sb3dlckJvdW5kID0gbG93ZXJCb3VuZDsKICAgICAgICBfdXBwZXJCb3VuZCA9IHVwcGVyQm91bmQ7CiAgICAgICAgX2l0ZW1zID0gbmV3IHN0cmluZ1sxICsgdXBwZXJCb3VuZCAtIGxvd2VyQm91bmRdOwogICAgfQoKICAgIHB1YmxpYyBzdHJpbmcgdGhpc1tpbnQgaW5kZXhdCiAgICB7CiAgICAgICAgZ2V0IHsgcmV0dXJuIF9pdGVtc1tpbmRleCAtIF9sb3dlckJvdW5kXTsgfQogICAgICAgIHNldCB7IF9pdGVtc1tpbmRleCAtIF9sb3dlckJvdW5kXSA9IHZhbHVlOyB9CgogICAgfQoKICAgIHB1YmxpYyBzdHJpbmcgdGhpc1tpbnQgd29yZCwgaW50IHBvc2l0aW9uXQogICAgewogICAgICAgIGdldCB7IHJldHVybiB0aGlzW3dvcmRdLlN1YnN0cmluZyhwb3NpdGlvbiwgMSk7IH0KICAgIH0KfQo=