```python
def split_length(mm: int) -> str:
    if not isinstance(mm, int) or mm < 0:
        raise ValueError("Invalid length")

    units = []
    if mm >= 1000:
        units.append(f"{mm // 1000}m")
        mm %= 1000
    if mm >= 10:
        units.append(f"{mm // 10}cm")
        mm %= 10
    if mm > 0:
        units.append(f"{mm}mm")

    return " ".join(units) or "0mm"
```