from datetime import datetime
from typing import List


def dates_between(start: datetime, end: datetime) -> List[datetime]:
    """
    Generate dates between given start and end,
    with days ending on 5 (to simulate sparse observations)
    """
    dates = (datetime(y, m, d) for y in range(start.year, end.year + 1) for m in range(1, 13) for d in [5, 15, 25])
    return [d for d in dates if start <= d < end]