Certainly! Here is a test case generator for the given problem statement "Elevator Hall Number":

```python
import random

def tcgen():
    # Number of datasets to generate
    num_datasets = random.randint(1, 10)
    datasets = []
    
    for _ in range(num_datasets):
        N = random.randint(2, 6)  # Number of elevators
        ranges = []
        
        for _ in range(N):
            low = random.randint(1, 99)
            high = random.randint(low, 99)
            ranges.append((low, high))
        
        datasets.append((N, ranges))
    
    # Append a single zero line to indicate end of input
    datasets.append(0)
    
    return datasets

def format_datasets(datasets):
    formatted = []
    for dataset in datasets:
        if dataset == 0:
            formatted.append("0")
        else:
            N, ranges = dataset
            formatted.append(str(N))
            for low, high in ranges:
                formatted.append(f"{low} {high}")
    return "\n".join(formatted)

# Example usage
datasets = tcgen()
formatted_input = format_datasets(datasets)
print(formatted_input)
```

This generator creates a random number of datasets according to the constraints provided in the problem statement. Each dataset contains a random number of elevators (between 2 and 6) and for each elevator, a random range of floors is specified. Finally, a zero is appended to indicate the end of input.

**Example output of the test case generator:**

```
3
1 20
10 30
5 15
2
1 1
50 99
4
10 20
5 10
1 5
90 99
0
```

This generator ensures that the ranges are valid and that the number of elevators and their respective floor ranges are within the specified constraints. The output is formatted to match the expected input format for the problem.