「究極」の関数型言語 "Iota" を知っているか

# TL; DR
これが Iota による HelloWorld です。注目すべきなのは、このプログラムは**たった一個**の組み込み関数 `i` **だけ**で作られているということです。

```
i(i(i(i)))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))(i(i))))(i(i(i(i))))))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i)))(i(i)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))(i(i))))(i(i(i(i))))))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i)))(i(i))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))(i(i))))(i(i(i(i))))))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i)))(i(i)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))(i(i))))(i(i(i(i))))))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i)))(i(i)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))(i(i))))(i(i(i(i))))))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i)))(i(i))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))(i(i))))(i(i(i(i))))))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i)))(i(i)))))))))))))))))))))))))))))))))))))))))))))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))(i(i))))(i(i(i(i))))))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i)))(i(i)))))))))))))))))))))))))))))))))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))(i(i))))(i(i(i(i))))))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i)))(i(i))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))(i(i))))(i(i(i(i))))))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i)))(i(i))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))(i(i))))(i(i(i(i))))))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i)))(i(i)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))(i(i))))(i(i(i(i))))))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i)))(i(i)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))(i(i))))(i(i(i(i))))))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i)))(i(i)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))(i(i))))(i(i(i(i))))))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i)))(i(i))))))))))))))))))))))))))))))))))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))(i(i))))(i(i(i(i))))))))(i(i(i(i)))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i(i))))(i(i(i(i(i))))(i(i(i(i)))(i(i(i(i(i))))))(i(i(i(i)))))(i(i(i(i)))(i(i)))))))))))))(i(i(i(i)))(i(i(i(i)))))))))))))))))))
```

# ラムダ計算とは
Iota によるプログラミングのためには**ラムダ計算**の知識が必要不可欠です。ラムダ計算についてはすでに[素晴らしい記事](https://qiita.com/zk_phi/items/acb821d298151a7b96d2)があるので、ここではざっくりと説明していきます。

ラムダ計算は**計算模型**の一種です。計算模型とは、噛み砕いて説明すれば「如何にして計算を行うか？」を表現したものです。現代のコンピュータが「チューリングマシン」をもとに作られていることは有名な話ですが、このチューリングマシンも計算模型の一種です。

ただしラムダ計算はチューリングマシンとは全く違った方法で計算を実現します。ラムダ計算による計算は以下のように記述されます。

$$
\lambda\text{[引数]}.\text{[返り値]}
$$

具体例として、「受け取った引数をそのまま返す関数」はこのように書けます。

$$
\lambda x.x
$$

また、「受け取った自然数に 1 を足して返す関数」はこのようになります。

$$
\lambda x.x + 1
$$

:::note warn
ただし純粋なラムダ計算には "+" や "-" のような演算もなければ "1" や "2" といった自然数もないので、これらは別途定義する必要があります。これについては後で説明します。
:::

こうして表記した関数の右側に引数を置きます。

$$
(\lambda x.x + 1)\ 4 = 5
$$

「受け取った自然数に 1 を足して返す関数」に 4 を渡したので、結果は $4 + 1 = 5$ となります。

また、関数に関数を渡すこともできます。こんな感じです。

$$
(\lambda f.f\ 7)(\lambda x.x + 1)
$$

この式においては $\lambda f.f\ 7$ が関数に、$\lambda x.x + 1$ が引数に当たります。よって計算結果はこのようになります。

```math
\begin{align*}
   & (\lambda f.f\ 7)(\lambda x.x + 1) \\
  =\ & (\lambda x.x + 1)\ 7 \\
  =\ & 8
\end{align*}
```

Python で再現するとこんな感じです。

```python
result = (lambda f: f(7))(lambda x: x + 1)
print(result) # 8
```

最初は少し混乱すると思いますが、すぐ慣れます。

## カリー化
今のままでは引数が一個の関数しか作れないので、「$n$ と $m$ の和を求める関数」などが作れません。そこで**カリー化**という考え方を用います。先に結論からお見せすると「$n$ と $m$ の和を求める関数」はこのようになります。

$$
\lambda n. \lambda m. n + m
$$

これ、何が起きているかわかるでしょうか。試しにこの関数に "3" を渡してみます。

$$
(\lambda n. \lambda m. n + m)\ 3 = \lambda m. 3 + m
$$

$\lambda n. \lambda m. n + m$ という式に 3 が渡された結果、「引数 $m$ に 3 を足した値を返す関数」である $\lambda m. 3 + m$ が返ってきました。これにさらに 5 を渡してみましょう。

$$
(\lambda m. 3 + m)\ 5 = 8
$$

無事に $3 + 5 = 8$ が求まりました。今やったことを Python で表現するとこんな感じになります。

```python
result = (lambda n: lambda m: n + m)(3)(5)
print(result) # 8
```

このように、一引数関数しかなくても「事実上の多引数関数」は作れるのです。これを関数のカリー化といいます。

:::note
ただし $\lambda n. \lambda m. n + m$ という書き方は少し冗長なので、普通は $\lambda nm. n + m$ と、あたかも二引数関数であるかのような書き方をします。
:::

# ラムダ計算によるプログラミング
ではこんなものでどのようにプログラミングを行うのでしょうか。それを考える前に、そもそも「**プログラムとは何ぞや？**」ということについて考えます。

プログラムの代表例として、Linux の基本的なコマンドをいくつか見ていきましょう。まずは `echo` です。

```shell
$ echo hoge
hoge
```

`echo` というプログラムに "hoge" という文字列を渡したところ、画面には "hoge" という文字列が表示されました。

次に `bc` です。

```shell
$ echo "3+9" | bc
12
```

`bc` に "3+9" という文字列を渡したところ、計算結果を表す "12" という文字列が返ってきました。

最後に `sed` です。

```shell
$ echo "hello, world" | sed "s/hello/goodbye/"
goodbye, world
```

"hello, world" という文字列を変形した "goodbye, world" という文字列が表示されています。

さて今あげた三つの例には「文字列を受け取り、文字列を返す」という共通点がありました。つまり「プログラム」とは、極限まで単純化すれば「**文字列から文字列への写像**」なのです。

先ほど「現代的コンピュータの基礎となっているもの」としてチューリングマシンを挙げましたが、これなどまさに「文字列を受け取って文字列を返すもの」の最たる例です。チューリングマシンはテープに書き込まれた文字を入力として受け取り、それを所定の動作に従って書き換えたものが出力に当たるからです。

そういうわけで、ラムダ計算でのプログラミングを実現するにはチューリングマシンのように文字列を処理する仕組みが必要になります。一体どうすればよいのでしょうか？

# チャーチエンコーディング
ラムダ計算においては、文字列を**自然数の列**として扱います。例えば "hello" という文字列の場合、まずはこれを

```
{
    文字 'h' を表す自然数, 文字 'e' を表す自然数, ...
}
```

といった具合に表します。文字に対する自然数の割り当てとして ASCII コードを用いれば、"hello" は {104, 101, 108, 108, 111} と表現されます。

しかしここで一つの問題が立ち現れます。先ほどこんなことを言っていたのを覚えているでしょうか。

> ただし純粋なラムダ計算には "+" や "-" のような演算もなければ "1" や "2" といった自然数もないので、これらは別途定義する必要があります。これについては後で説明します。

ラムダ計算には自然数という概念はありません。というか、ラムダ計算には「一つのラムダ式を受け取って一つのラムダ式を返すラムダ式」**しか**ありません。先ほどは $\lambda x.x + 1$ のような式を作っていましたが、あれはただの方便です。

しかし、こんなラムダ式でも自然数を表す方法は存在するのです。その代表例がアロンゾ・チャーチによる**チャーチエンコーディング**です。これは具体例を見ていただくのが早いでしょう。

```math
\begin{align*}
  0 &= \lambda fx.x \\
  1 &= \lambda fx.fx \\
  2 &= \lambda fx.f(fx) \\
  \vdots
\end{align*}
```

このように、チャーチエンコーディングでは自然数 $N$ を「$f$ と $x$ を受け取り、『$x$ に $f$ を $N$ 回適用したもの』を返す関数」と表します。

なんだか狐につままれたような感じですが、これでうまくいくのです。詳細は[先ほどの記事](https://qiita.com/zk_phi/items/acb821d298151a7b96d2)にもありますが、この自然数に対し足し算でも掛け算でも、階乗すらも計算することができます。

# スコットエンコーディング
そんな感じで自然数は表せました。しかしこれだけではダメです。さきほど「"hello" という文字列は {104, 101, 108, 108, 111} という自然数のリストで表現される」とお話ししました。つまり、「自然数」を表現する方法に加えて「リスト」を表現する方法も必要になります。これを実現するのがデイナ・スコットによる**スコットエンコーディング**です。スコットエンコーディングでは以下のような関数を定めます。

```math
\begin{align*}
  \mathrm{emptyList} &= \lambda fxy.x \\
  \mathrm{cons}      &= \lambda abf.fab \\
  \mathrm{car}       &= \lambda p.p(\lambda xy.x) \\
  \mathrm{cdr}       &= \lambda p.p(\lambda xy.y)
\end{align*}
```

LISP をやったことがある方は見覚えのある名前だと思います。まず $\mathrm{cons}$ は二つの引数を組み合わせて一組の「ペア」を作る関数になります。つまり、$\mathrm{cons}\ b\ a$ で「a と b を組み合わせたペア」になります。これを用いて以下のようにリストを定義します。

```math
\begin{align*}
  \{\}        &= \mathrm{emptyList} = \lambda fxy.x \\
  \{a\}       &= \mathrm{cons}\ a\ \{\} \\
  \{b, a\}    &= \mathrm{cons}\ b\ (\mathrm{cons}\ a\ \{\}) \\
  \{c, b, a\} &= \mathrm{cons}\ c\ (\mathrm{cons}\ b\ (\mathrm{cons}\ a\ \{\})) \\
  &\vdots
\end{align*}
```

このように、$\mathrm{cons}\ \text{追加する要素}\ \text{追加先のリスト}$ としてリストに要素を追加し続けることができるのです。

また $\mathrm{car}$ と $\mathrm{cdr}$ ですが、これはそれぞれ「リストの先頭要素を取り出す関数」と「リストから先頭要素を除いたリストを取り出す関数」です。実際に計算してみるとわかるのですが、$\mathrm{car}(\mathrm{cons}\ c\ (\mathrm{cons}\ b\ (\mathrm{cons}\ a\ \\{\\})))$ は $c$ になり、$\mathrm{cdr}(\mathrm{cons}\ c\ (\mathrm{cons}\ b\ (\mathrm{cons}\ a\ \\{\\})))$ は $\mathrm{cons}\ b\ (\mathrm{cons}\ a\ \\{\\})$ となります。

# ラムダ計算の処理手順
さてこれで文字列を「自然数のリスト」として表現する手立てが整いました。ラムダ計算によるプログラムは以下のような処理手順になります。

1. 入力文字列を自然数のリスト（を表現したラムダ式）に変換する。これを $L$ と置く。
1. プログラムにあたるラムダ式 $P$ に $L$ を渡し、$P\ L$ を求める。
1. $P\ L$ を自然数のリストと解釈し、文字列に戻して出力する。

例えば、以下のラムダ式が「プログラム」であるとします。

$$
\lambda x.x
$$

これに入力文字列 "hogehoge" を食わせます。

$$
\lambda x.x\ (\text{"hogehoge" という文字列を表現したラムダ式})
$$

$\lambda x.x$ は入力をそのまま返す関数でしたから、これは結局文字列 "hogehoge" を表現したラムダ式が返ってくることになります。つまり、これはラムダ式による **echo の実装** になります。

別の例も見てみましょう。

$$
\lambda x.(\text{"Hello, World!" という文字列を表現したラムダ式})
$$

このプログラムは「引数の内容には**一切関係なく** "Hello, World!" という文字列を返す関数」になります。つまり、こちらは **HelloWorld の実装**になります。

このような仕組みによりラムダ計算で「文字列を受け取って文字列を返す」ことが可能になりました。実際、ラムダ計算は**チューリング完全**であることが証明されています。つまりラムダ式をうまく設計してやれば、任意のチューリングマシンを模倣することが可能になるのです。

# SKI コンビネータ
ラムダ計算はとても単純な決まり事のみでチューリング完全性を達成していたわけですが、さらに単純化することもできます。実は、**任意のラムダ式は以下の三つの式の組み合わせのみで表現できる**ことが知られているのです。

```math
\begin{align*}
  I &= \lambda x.x \\
  K &= \lambda xy.x \\
  S &= \lambda xyz.xz(yz)
\end{align*}
```

よってこの $S$, $K$, $I$ の組み合わせもチューリング完全です。この三つをまとめて **SKI コンビネータ**といいます。

:::note
「コンビネータ」とは「自由変数を含まないラムダ式」という意味です。自由変数とは、ざっくりと言えば「引数に入っていない変数」のことです。こちらのラムダ式をご覧ください。

$$
\lambda x.fx
$$

このラムダ式は $x$ を受け取って $f x$ を返します。しかしこの $f$ は引数に入っていないので正体不明です。この $f$ のような変数を自由変数と言います。また、自由変数ではない変数は束縛変数と言います。つまり $x$ は束縛変数です。
:::

:::note
実は任意のラムダ式 $x$, $y$ に対し $SKxy = y$ が成り立ちます。したがって、$SKx$ は「実質的に $I$ と同じ」といえます（このことを専門的には「外延的に等しい」といいます）。なので $S$ と $K$ だけでもチューリング完全です。
:::

# ιコンビネータ
さらに、SKI コンビネータはもっと単純化することもできます。まずは **$\iota$[^iota] コンビネータ**を定義します。

[^iota]: ギリシャ文字の一種で、「イオタ」と読みます。

```math
\begin{align*}
\iota &= \lambda f.fSK \\
      &= \lambda f.f(\lambda xyz.xz(yz))(\lambda xy.x)
\end{align*}
```

この $\iota$ ですが、なんとこれ一つで **$S$, $K$, $I$ の全てを表せます**。

```math
\begin{align*}
  I &= \iota\iota \\
  K &= \iota(\iota(\iota\iota)) \\
  S &= \iota(\iota(\iota(\iota\iota))) \\
\end{align*}
```

記事冒頭で「たった一個の組み込み関数 `i`」だけで HelloWorld をしていましたが、この `i` が $\iota$ だったんですね。

:::note
このように Iota 言語は「たった一つの関数のみでチューリング完全性を達成する」という離れ業を成し遂げています。この Iota のように、「極めて少ない構成要素のみでチューリング完全性を達成する」ことを**チューリング陥穽** (Turing turpit) と言います。

ただし一つ補足しておきます。この「チューリング陥穽」という言葉の元ネタはアラン・パリスの *Epigrams on Programming*（プログラミングにおける警句集）なのですが、そこではこのように記されています。

> 54\. Beware of the Turing tar-pit in which everything is possible but nothing of interest is easy.
> （全てが可能だが、その一方で重要なことは何一つ簡単にはできない「チューリング陥穽」に気をつけろ。）

つまり「チューリング陥穽」という言葉自体は残念ながら誉め言葉とは言えなさそうです。
:::

# 実装
今回は C++ で実装していきます。実は**あること**（後述）に目をつぶれば実装は一瞬で終わります。

そもそもラムダ式とは何だったかというと、「ラムダ式を受け取ってラムダ式を返す関数」でした。よって C++ によるラムダ式の実装はこれだけです。

```c++
class lambda final : std::function<lambda(lambda)> {
    using std::function<lambda(lambda)>::function;
public:
    using std::function<lambda(lambda)>::operator();
};
```

これだけで $S$ も $K$ も $I$ も作れます。

```c++
#include <functional>

class lambda final : std::function<lambda(lambda)> {
    using std::function<lambda(lambda)>::function;
public:
    using std::function<lambda(lambda)>::operator();
};

lambda I = [](lambda x) {
    return x;
};

lambda K = [](lambda x) {
    return [x](lambda y) {
        return x;
    };
};

lambda S = [](lambda x) {
    return [x](lambda y) {
        return [x, y](lambda z) {
            return x(z)(y(z));
        };
    };
};
```

また、チャーチエンコーディングの実装はこんな感じになります。

```c++
lambda church_encode(unsigned n)
{
    return [n](lambda f) {
        return [n, f](lambda x) {
            for (unsigned i = 0; i < n; ++i) {
                x = f(x);
            }
            return x;
        };
    };
}

unsigned church_decode(lambda n)
{
    unsigned decoded = 0;
    n(
        [&decoded](lambda _){ ++decoded; return _; }
    )(
        I /* ここは別に何でもいい */
    );
    return decoded;
}

int main()
{
    std::cout << church_decode(church_encode(42)) << std::endl; /* 42 */
}
```

チャーチエンコーディングによる自然数 $N$ の定義は「$f$ と $x$ を受け取り、『$x$ に $f$ を $N$ 回適用したもの』を返す関数」でしたから、$f$ には「適当な変数をインクリメントする関数」、$x$ にはなんでもいいので適当なラムダ式を渡してやればデコードが可能になります。このままサクサク実装していけば完成・・・

・・・と言いたいところですが、このままではある**大問題**が発生してしまいます。

# 「評価戦略」
突然ですが、このラムダ式の計算結果は何になるでしょう。

$$
\lambda x.xx\ (\lambda x.xx)
$$

実際に展開してみましょう。

```math
\begin{align*}
  \lambda x.xx\ (\lambda x.xx) &= \lambda x.xx\ (\lambda x.xx) \\
                               &= \lambda x.xx\ (\lambda x.xx) \\
                               &= \lambda x.xx\ (\lambda x.xx) \\
                               & \vdots
\end{align*}
```

見ての通り、このラムダ式の展開は永遠に終わりません。こういうのを専門的には「正規形が存在しない」といいます。

:::note
ちなみに $\lambda x.xx$ は **U コンビネータ**、$\lambda x.xx\ (\lambda x.xx) (= UU)$ は **$\Omega$ コンビネータ**と呼ばれます。
:::

ではこれを踏まえたうえで、こちらのラムダ式の計算結果はどうなるでしょうか？

$$
(\lambda xy.y)\ (\lambda x.xx\ (\lambda x.xx))\ I
$$

少し見づらいので、$\lambda x.xx\ (\lambda x.xx)$ を $\Omega$ と置きましょう。するとこうなってしまいます。

$$
(\lambda xy.y)\ \Omega\ I = I
$$

なんと、$\Omega$ は永遠に展開が終わらない式であったのにもかかわらず、それを**含む**式はきちんと計算結果が出てきました。これはすなわち、**どうせ $\Omega$ は使わないのだから、そもそも展開する必要もなかった**ということです。

ところが C++ で実装する場合はこうも行きません。

```c++
int main()
{
    [](lambda x) { return [](lambda y) { return y; }; }
    (
        /* こいつの展開は永遠に終わらない */
        [](lambda x) { return x(x); }([](lambda x) { return x(x); })
    )
    (
        I
    );

    /* Command terminated */
}
```

専門的には、C++ は**正格評価**という**評価戦略**を用いています。これはどういうことかというと、**まず引数の評価を最後まで終わらせて、そのあとで関数に渡す**ということです。さきほどは「どうせ $\Omega$ は使わないのだから、そもそも展開する必要もなかった」という話をしましたが、C++ の立場からすれば**関数の中で引数が使われるかどうか**なんて関係ありません。使う使わないに関わらず、まずは引数をすべて評価してしまうのです。なので、本来であれば評価する必要のない引数まで評価し続けてしまい、メモリを食い尽くして異常終了してしまうわけです。

ところが世の中には正格評価ではない評価戦略、**非正格評価**をする言語もあります。その代表例が関数型言語 **Haskell** です。

```haskell
main = do print $ fst  ('a', 1 `div` 0) -- 'a'
```

このコードは文字 'a' と **1 ÷ 0** のペアを作り、その先頭要素を画面に出力します。つまり画面には 'a' と表示されます。

1 ÷ 0 だなんていかにもエラーが発生しそうな計算です。実際、Haskell でも 1 ÷ 0 を出力しようとすればエラーになります。

```Haskell
main = do print $ 1 `div` 0 -- Main: divide by zero
```

ところが先ほどの例ではエラーになりません。これはなぜかというと、画面に表示したいのは ``('a', 1 `div` 0)`` の**先頭要素のみ**であるため、逆に言えば**それ以外の要素はどうせ使わない**からです。このように Haskell 等の言語では、値が**実際に必要になる**まで評価が行われません。これを非正格評価と言います。つまりラムダ式を正しく計算するには非正格評価を行わなければならなかったのです。

しかし正格・非正格はあくまでも言語レベルで定められていることなので、「C++ を使う！」と決めてしまったならば非正格評価を行うことは決してできません。それでは C++ でラムダ式を処理することは不可能なのでしょうか？

いいえ、C++ でも非正格評価を**模倣**することはできます。このようにするのです。

```c++
class lambda final : std::function<lambda(lambda)> {
    using std::function<lambda(lambda)>::function;
private:
    /* C++ 「本来」の呼び出し。正格評価にあたる。 */
    lambda pass_by_value(lambda arg) const
    {
        return std::function<lambda(lambda)>::operator()(arg);
    }

public:
    /* 正格評価による呼び出しを無名関数で包むことで遅延させる。 */
    lambda operator()(lambda arg) const
    {
        return [arg, *this](lambda _) {
            return pass_by_value(arg).pass_by_value(_);
        };
    }

    friend unsigned church_decode(lambda);
};

/* （中略） */

unsigned church_decode(lambda n)
{
    unsigned decoded = 0;
    n(
        [&decoded](lambda _){ ++decoded; return _; }
    )(
        I /* ここは別に何でもいい */
    ).pass_by_value(
        I /* ここも別に何でもいい */
    );
    return decoded;
}
```

C++ 本来の正格評価には `pass_by_value` という名前をつけておき、`private` 指定することで隠蔽します。そして非正格評価の模倣に当たる部分が `operator()` です。ここでは引数 `arg` を実際に渡してしまうのではなく、**「`arg` を渡す」という動作をする関数**を返します。これにより `arg` が実際に関数に渡されるのを遅延させることができるのです。

ただしプログラムである以上いつかは画面に何かを表示しなければならないので、関数の呼び出しを**永遠に遅延させ続ける**わけにはいきません。具体的には「チャーチエンコーディングされた整数をデコードするとき」と「スコットエンコーディングされたリストをデコードするとき」の二つはどうしても `pass_by_value` による正格評価が必要になります。そこでこれらデコード関数だけは特別に `friend` 指定しておくわけです。

この手法により非正格評価を再現することが可能になります。このコードを見てください。

```c++
int main()
{
    lambda foo =
        [](lambda x) { return [](lambda y) { return y; }; }
        (
            /* こいつが永遠に展開されてしまうこともない */
            [](lambda x) { return x(x); }([](lambda x) { return x(x); })
        )
        (
            church_encode(42)
        );

    std::cout << church_decode(foo) << std::endl; /* 42 */
}
```

さっきまでは関数呼び出しの前に引数を評価していたので異常終了してしまいましたが、今回は無事に必要な引数だけが実際に評価されました。

# Hello, World!
以上のような方策を用いることで C++ でもラムダ計算の処理系を実装できます。スコットエンコーディング等の実装の詳細は省略しますが、ここまでくれば何も難しいことは必要ありません。完成品がこちらになります。

https://github.com/reika727/LambdaCpp

それでは満を持して HelloWorld していきます。先ほどもお見せしましたが、HelloWorld に当たるプログラムはこんなラムダ式です。

$$
\lambda x.(\text{"Hello, World!" という文字列を表現したラムダ式})
$$

まずはこのラムダ式を $S$, $K$, $I$ の三つのみで表現します。具体的な変換アルゴリズムはやはり[こちらの記事](https://qiita.com/zk_phi/items/acb821d298151a7b96d2#t-%E5%A4%89%E6%8F%9B-)に記されているので、今回は変換結果だけお借りします。

```
K(S(S(K(S))(S(K(K))(S(K(S))(S(K(S(I)))(K)))))(K(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(K(I))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(S(S(K(S))(S(K(K))(S(K(S))(S(K(S(I)))(K)))))(K(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(K(I)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(S(S(K(S))(S(K(K))(S(K(S))(S(K(S(I)))(K)))))(K(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(K(I))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(S(S(K(S))(S(K(K))(S(K(S))(S(K(S(I)))(K)))))(K(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(K(I))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(S(S(K(S))(S(K(K))(S(K(S))(S(K(S(I)))(K)))))(K(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(K(I)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(S(S(K(S))(S(K(K))(S(K(S))(S(K(S(I)))(K)))))(K(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(K(I))))))))))))))))))))))))))))))))))))))))))))))(S(S(K(S))(S(K(K))(S(K(S))(S(K(S(I)))(K)))))(K(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(K(I))))))))))))))))))))))))))))))))))(S(S(K(S))(S(K(K))(S(K(S))(S(K(S(I)))(K)))))(K(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(K(I)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(S(S(K(S))(S(K(K))(S(K(S))(S(K(S(I)))(K)))))(K(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(K(I)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(S(S(K(S))(S(K(K))(S(K(S))(S(K(S(I)))(K)))))(K(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(K(I))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(S(S(K(S))(S(K(K))(S(K(S))(S(K(S(I)))(K)))))(K(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(K(I))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(S(S(K(S))(S(K(K))(S(K(S))(S(K(S(I)))(K)))))(K(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(K(I))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(S(S(K(S))(S(K(K))(S(K(S))(S(K(S(I)))(K)))))(K(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(K(I)))))))))))))))))))))))))))))))))))(S(S(K(S))(S(K(K))(S(K(S))(S(K(S(I)))(K)))))(K(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(S(S(K(S))(K))(K(I))))))))))))(K(K))))))))))))))))
```

ここまでくればあとは簡単です。$\iota$ と $S$, $K$, $I$ の関係はこのように↓なっていたので、

```math
\begin{align*}
  I &= \iota\iota \\
  K &= \iota(\iota(\iota\iota)) \\
  S &= \iota(\iota(\iota(\iota\iota))) \\
\end{align*}
```

この等式に従って機械的に変換すればおしまいです。それが[記事冒頭](https://qiita.com/reika727/items/61ec7889f2a238112772#tl-dr)でお見せしたあのコードになります。あとはこれを C++ ソースコードに貼り付けて完成です。

```c++:iota_hello.cpp
/* Download from https://github.com/reika727/LambdaCpp !!! */
#include "lambda-expression.hpp"
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>

using namespace lambda::combinators;

int main()
{
    /* プログラム本体に当たる部分 */
    const lambda::expression program = i(i(i( /* ... 中略 ... */ )));

    /* program への引数。ただどうせ使われないので内容は何でもいい */
    std::string foo = "HOGE HOGE FUGA FUGA!!!";

    /* プログラムの処理結果をデコードしたものがここに入る */
    std::vector<char> result;

    /* 実行 */
    lambda::run_on_integer_sequence(foo.begin(), foo.end(), program, std::back_inserter(result));

    /* 結果を文字列として表示 */
    for (auto ch : result) {
        std::cout << ch;
    }
    std::cout << std::endl;
}
```

こちらのプログラムですが、コンパイルには<font color="red">**二時間半**</font>かかりました。

```shell
$ time g++ iota_hello.cpp --std=c++17 && time ./a.out

real    154m21.342s
user    153m46.597s
sys     0m33.498s
Hello, World!


real    3m52.844s
user    3m50.942s
sys     0m1.679s
```

プログラム自体も、ただの HelloWorld のくせに 3 MB 近くあります。

```shell
$ ls -lh a.out
-rwxr-xr-x 1 reika727 reika727 2.8M Mar 22 10:47 a.out
```

# ちょっと深い話
ここからはすこし、いやかなりマニアックなお話です。

## 0 と 1 による表記
この Iota という言語は実は **0 と 1 だけ**で記述することができます。

まずこのような文法を考えます。

```
iota = "0" | "1" iota iota
```

ここで "0" は $\iota$ 一個に、"1" は 右側のもの二つをまとめる括弧にあたります。といってもわけがわからないと思うので具体例を見てみましょう。"1100100" という文字列から上の文法にしたがって構文木を作るとこのようになります。

```
     1
   /   \
  1     1
 / \   / \
0   0 0   0
```

つまり、"1100100" という文字列は $((\iota\iota)(\iota\iota))$ という式に当たるのです。

別の例も見てみましょう。"1010100" はこのような構文木になります。

```
  1
 / \
0   1
   / \
  0   1
     / \
    0   0
```

よって、この文字列は $(\iota(\iota(\iota\iota)))$ という式に当たります。

## チャーチ・チューリングの提唱
いったん話かわります。

古くから数学の世界にはある一つの問いがありました。それは、**そもそも「計算」とはいかなることなのか？**&#8203;という問いです。そこで、この「計算」という行為を厳密に定めようという動きがありました。そして二十世紀ごろ、「計算」という行為のモデル化（計算模型）が立てつづけに考案されました。**μ 再帰関数**、**ラムダ計算**、**チューリングマシン**などです。この三つは全く別々の人たちにより考案され、しかも一見するとそれぞれが全く違った方法で計算を行うのにもかかわらず、なんと**これらはすべて全く等しい表現能力を持つ**ことが証明されたのです。つまり、これら計算模型のどれか一つで解ける問題は他の計算模型でも解けますし、逆にどれか一つで解けない問題は他のどの計算模型にも解けないことが明らかになったのです。

言い方を変えれば、これらの計算模型を超える能力を持つ計算模型は**誰にも思いつけなかった**とも言えます。そこで、**「『μ 再帰関数で計算できること』を『計算可能である』ことの定義にしちゃっていいんじゃね？」**&#8203;という提案がなされました。これが**チャーチ・チューリングの提唱**です。

:::note warn
「チャーチ・チューリングの提唱」はあくまでも「提唱」であって&#8203;**「定理」ではない**ことに注意してください。つまりチャーチ・チューリングの提唱は何者かによって証明された事実ではなく、単なる**提案**です。
:::

さて Iota の話に戻ってきます。先ほどもお話ししたように $\iota$ はチューリング完全ですから、チャーチ・チューリングの提唱を受け入れるならば **Iota は任意のアルゴリズムを記述できる**ことになります。

それに加えて、さきほどお見せしたように任意の Iota プログラムは 0 と 1 のみで表記することが可能です。ここから言えることは、**任意のアルゴリズムに対し一意な自然数を割り振ることが可能である**ということです。Iota プログラムとして有効な文字列は "0" 一文字のみの文字列か "1" から始まる文字列のみのため、割り振られる自然数がかぶることもありません。

## Jot
最後に Iota の姉妹に当たる **Jot** 言語を軽く紹介します。Jot 言語も Iota 言語と同じく任意のアルゴリズムに自然数を割り振れるのですが、Iota とは違って 0 と 1 からなる**任意**の文字列（空文字列も含む）が有効なプログラムになります。

0 と 1 からなる文字列 $w$ に対し、$w$ の「翻訳」を $[w]$ と表記することにします。すると Jot 言語はこのように定められます。

```math
\begin{align*}
  [] &\rightarrow I \\
  [w0] &\rightarrow [w]SK (= \iota [w]) \\
  [w1] &\rightarrow S(K[w])
\end{align*}
```

また、翻訳途中で "1" に遭遇したときにはこのようなショートカットができる場合があります。つまり "1" は直後の項二つをまとめる効果があります。

```math
\begin{align*}
  [w1001] &\rightarrow S(K[w100]) \\
              &\rightarrow S(K([w10]SK)) \\
              &\rightarrow S(K([w\color{red}{1}]\color{blue}{SK}SK)) \\
              &\rightarrow S(K([w]\color{blue}{(SK)}SK)) \\
  \because S(K([w1]SKSK)) &\rightarrow S(K(S(K[w])SKSK)) \\
              &\rightarrow S(K((K[w])K(SK)SK)) \\
              &\rightarrow S(K([w](SK)SK)) \\
\end{align*}
```

この法則を利用すると以下のような公式が成り立ちます。

```math
\begin{align*}
  [w11100] &\rightarrow [w111]SKSK \\
           &\rightarrow [w](SKSK) \\
           &\rightarrow [w]K
\end{align*}
```

```math
\begin{align*}
  [w11111000] &\rightarrow [w11111]SKSKSK \\
              &\rightarrow [w](SKSKSK) \\
              &\rightarrow [w]S
\end{align*}
```

先ほども書いたように $S$, $K$ の組み合わせはチューリング完全であり、また上記の法則より $S$, $K$ の組み合わせで表現できる任意の式は**必ず 1 から始まる列で表せる**ことになります。したがって、この Jot 言語も Iota 言語と同じく任意のアルゴリズムに自然数を割り振ることができるのです。美しいですね～。

# おわりに
計算機科学の世界は本当に摩訶不思議です。一体何を食べてたらこんなこと思いつくんでしょうか・・・