let rec f=function|[]->[]|h::t->List.rev h@(t|>List.map List.rev|>f)
[
[];
[[1]];
[[2; 1]; [3; 4]];
[[3; 2; 1]; [4; 5; 6]; [9; 8; 7]];
[[4; 3; 2; 1]; [5; 6; 7; 8]; [12; 11; 10; 9]; [13; 14; 15; 16]]
] |> List.iter(f>> printfn "%A")
bGV0IHJlYyBmPWZ1bmN0aW9ufFtdLT5bXXxoOjp0LT5MaXN0LnJldiBoQCh0fD5MaXN0Lm1hcCBMaXN0LnJldnw+ZikKWwogICAgW107CiAgICBbWzFdXTsKICAgIFtbMjsgMV07IFszOyA0XV07CiAgICBbWzM7IDI7IDFdOyBbNDsgNTsgNl07IFs5OyA4OyA3XV07CiAgICBbWzQ7IDM7IDI7IDFdOyBbNTsgNjsgNzsgOF07IFsxMjsgMTE7IDEwOyA5XTsgWzEzOyAxNDsgMTU7IDE2XV0KXSB8PiBMaXN0Lml0ZXIoZj4+IHByaW50Zm4gIiVBIik=