let rec aux current acc = function
| [] -> []
| [x] -> (x :: current) :: acc
| a :: (b :: _ as t) ->
if a = b then aux (a :: current) acc t
else aux [] ((a :: current) :: acc) t in
let a = [1;1;2;2;3;3;3;1];;
let () = pi a;;
let () = pi (roym a);;
bGV0IGNodW5rIGxpc3QgPQogICAgbGV0IHJlYyBhdXggY3VycmVudCBhY2MgPSBmdW5jdGlvbgogICAgICB8IFtdIC0+IFtdCiAgICAgIHwgW3hdIC0+ICh4IDo6IGN1cnJlbnQpIDo6IGFjYwogICAgICB8IGEgOjogKGIgOjogXyBhcyB0KSAtPgogICAgICAgICBpZiBhID0gYiB0aGVuIGF1eCAoYSA6OiBjdXJyZW50KSBhY2MgdAogICAgICAgICBlbHNlIGF1eCBbXSAoKGEgOjogY3VycmVudCkgOjogYWNjKSB0IGluCiAgICBMaXN0LnJldiAoYXV4IFtdIFtdIGxpc3QpOzsKbGV0IGluc3BlY3QgdG9fcyBsaXN0ID0gIlsiICBeIFN0cmluZy5jb25jYXQgIjsiIChMaXN0Lm1hcCB0b19zIGxpc3QpIF4gIl0iOzsKbGV0IHAgdG9fcyBsaXN0ID0gcHJpbnRfc3RyaW5nIChpbnNwZWN0IHRvX3MgbGlzdCk7cHJpbnRfc3RyaW5nICJcbiI7OwpsZXQgcm95bSBsaXN0ID0gTGlzdC5tYXAgTGlzdC5oZCAoY2h1bmsgbGlzdCk7OwpsZXQgYSA9IFsxOzE7MjsyOzM7MzszOzFdOzsKbGV0IHBpID0gcCBzdHJpbmdfb2ZfaW50OzsKbGV0ICgpID0gcGkgYTs7CmxldCAoKSA9IHBpIChyb3ltIGEpOzsK