```python
from typing import List

def split_agenda(sessions: List[List[int]], limit: int) -> List[List[int]]:
    if not sessions or not limit:
        raise ValueError("Invalid input")
    
    if not all(isinstance(session, list) and len(session) == 2 for session in sessions):
        raise ValueError("Invalid input")
    
    if not all(isinstance(session[0], int) and isinstance(session[1], int) for session in sessions):
        raise ValueError("Invalid input")
    
    if limit < 1 or not limit.is_integer():
        raise ValueError("Invalid limit")
    
    if any(session[0] >= session[1] for session in sessions):
        raise ValueError("Invalid session")
    
    if not all(sessions[i][0] <= sessions[i+1][0] for i in range(len(sessions)-1)):
        raise ValueError("Invalid session")
    
    blocks = []
    
    for session in sessions:
        start, end = session
        length = end - start
        
        if length <= limit:
            blocks.append(session)
        else:
            mid = length // 2
            front_half = (start, start + mid) if length % 2 == 0 else (start, start + mid + 1)
            back_half = (start + mid, end)
            blocks.extend(split_agenda([front_half, back_half], limit))
    
    return blocks
```