let swap (a, b) = (b, a)
let rec test_1 b ff x y =
match b with
| Some true -> test_2 None ff x y
| Some false -> test_2 None (swap ff) y x
and test_2 b ff x y =
match b with
| Some true -> test_1 None ff x y
| Some false -> test_1 None (swap ff) y x
bGV0IHN3YXAgKGEsIGIpID0gKGIsIGEpCgpsZXQgcmVjIHRlc3RfMSBiIGZmIHggeSA9CiAgICBtYXRjaCBiIHdpdGgKICAgIHwgTm9uZSAtPiAoZnN0IGZmKSB4IHkKICAgIHwgU29tZSB0cnVlIC0+IHRlc3RfMiBOb25lIGZmIHggeQogICAgfCBTb21lIGZhbHNlIC0+IHRlc3RfMiBOb25lIChzd2FwIGZmKSB5IHgKICBhbmQgdGVzdF8yIGIgZmYgeCB5ID0KICAgIG1hdGNoIGIgd2l0aAogICAgfCBOb25lIC0+IChmc3QgZmYpIHggeQogICAgfCBTb21lIHRydWUgLT4gdGVzdF8xIE5vbmUgZmYgeCB5CiAgICB8IFNvbWUgZmFsc2UgLT4gdGVzdF8xIE5vbmUgKHN3YXAgZmYpIHkgeA==