class mInt(val i : Int) {
    override fun toString() : String = "mint: $i"
    operator fun plus(i : Int) = mInt(this.i + i)
    operator fun inc() = mInt(i + 1)
}

class MyArray() {
    val a = Array<mInt>(10, {mInt(0)})
    operator fun get(i : mInt) : mInt = a[i.i]
    operator fun set(i : mInt, v : mInt) {
        a[i.i] = v
    }
}

fun box() : String {
    val a = MyArray()
    var i = mInt(0)
    a[i++]
    a[i++] = mInt(1)
    for (i in 0..9)
        a[mInt(i)]
    return "OK"
}
