```python
from typing import List

def split_cargo(weights: List[int]) -> List[int]:
    if not weights:
        raise ValueError("Manifest cannot be empty")
    if any(w < 1 for w in weights):
        raise ValueError("Weights must be positive integers")
    if len(weights) > 16:
        raise ValueError("Cannot handle more than sixteen items")

    forward_hold = [0]
    remaining_weights = weights[1:]
    remaining_weight_sum = sum(remaining_weights)
    best_diff = float('inf')
    best_forward_hold = []

    for i in range(1 << len(remaining_weights)):
        hold_weight = 0
        hold_indices = []
        for j in range(len(remaining_weights)):
            if i & (1 << j):
                hold_weight += remaining_weights[j]
                hold_indices.append(j + 1)
        diff = abs(remaining_weight_sum - 2 * hold_weight)
        if diff < best_diff or (diff == best_diff and len(hold_indices) < len(best_forward_hold)) or \
           (diff == best_diff and len(hold_indices) == len(best_forward_hold) and hold_indices < best_forward_hold):
            best_diff = diff
            best_forward_hold = hold_indices

    return best_forward_hold
```