open System
let folder state x =
match state with
| (zeros, others) ->
match x with
| 0 -> (0::zeros, others)
| n -> (zeros, n::others)
let zerosFirst xs =
match List.fold folder ([], []) xs with
| (zeros, others) -> List.append zeros others
let xs = [ 5; 0; 0; -4; 5; 0; 3; 3; 5; 0; -2; 0; 0 ]
zerosFirst xs |> printfn "%A"
b3BlbiBTeXN0ZW0KCmxldCBmb2xkZXIgc3RhdGUgeCA9CiAgbWF0Y2ggc3RhdGUgd2l0aAogIHwgKHplcm9zLCBvdGhlcnMpIC0+CiAgICBtYXRjaCB4IHdpdGgKICAgIHwgMCAtPiAoMDo6emVyb3MsIG90aGVycykKICAgIHwgbiAtPiAoemVyb3MsIG46Om90aGVycykKCmxldCB6ZXJvc0ZpcnN0IHhzID0KICBtYXRjaCBMaXN0LmZvbGQgZm9sZGVyIChbXSwgW10pIHhzIHdpdGgKICB8ICh6ZXJvcywgb3RoZXJzKSAtPiBMaXN0LmFwcGVuZCB6ZXJvcyBvdGhlcnMKCmxldCB4cyA9IFsgNTsgMDsgMDsgLTQ7IDU7IDA7IDM7IDM7IDU7IDA7IC0yOyAwOyAwIF0KemVyb3NGaXJzdCB4cyB8PiBwcmludGZuICIlQSI=