from typing import Dict


def deliver(target: int, limit: int = 0, per_drop: int = 10) -> Dict[int, int]:
    """
    Deliver presents to houses, recording how many presents each house receives, and return a
    mapping of house number to total presents.
    """
    houses: Dict[int, int] = {}

    for elf in range(1, target // 20):
        for house in range(elf, elf * limit if limit else target // 20, elf):
            total = houses.get(house, 0) + (per_drop * elf)
            houses[house] = total
            if total > target:
                break

    return houses