```python
def split_length(mm: int) -> str:
    if not isinstance(mm, int):
        raise ValueError("Length must be a whole number.")
    if mm < 0:
        raise ValueError("Length cannot be negative.")
    
    meters = mm // 1000
    remaining_mm = mm % 1000
    centimeters = remaining_mm // 10
    millimeters = remaining_mm % 10
    
    parts = []
    if meters > 0:
        parts.append(f"{meters}m")
    if centimeters > 0:
        parts.append(f"{centimeters}cm")
    if millimeters > 0 or not parts:
        parts.append(f"{millimeters}mm")
    
    return " ".join(parts)
```