```python
from typing import List

def menu_pick(dishes: List[str], budget: int) -> List[str]:
    """
    Returns the names of dishes costing no more than the given budget, sorted by price and name.
    Dishes with the same price are ordered alphabetically.
    """
    if budget < 0:
        raise ValueError("Budget cannot be negative.")
    
    # Sort dishes by price and then by name
    sorted_dishes = sorted(dishes, key=lambda x: (x.split()[1], x))
    
    # Filter dishes that cost no more than the budget
    affordable_dishes = [dish for dish in sorted_dishes if int(dish.split()[1]) <= budget]
    
    return affordable_dishes
```