Sure! Here is a test case generator for the given problem statement:

```python
import random
import string

def generate_random_string(length):
    return ''.join(random.choice(string.ascii_lowercase) for _ in range(length))

def tcgen():
    # Generate N
    N = random.randint(1, 1000000)
    
    # Generate S_0
    S_0 = generate_random_string(N)
    
    # Generate T
    T = generate_random_string(N)
    
    return N, S_0, T

# Example usage:
N, S_0, T = tcgen()
print(N)
print(S_0)
print(T)
```

Explanation:
1. **generate_random_string(length)**: This helper function generates a random string of lowercase English letters of the specified length.
2. **tcgen()**:
    - Randomly generates the integer \( N \) between 1 and 1,000,000.
    - Uses `generate_random_string` to create a random initial string \( S_0 \) of length \( N \).
    - Uses `generate_random_string` to create a random target string \( T \) of length \( N \).
3. **Example usage**: Demonstrates how the test case generator can be used to print out an example test case.

You can run this `tcgen()` function multiple times to generate diverse test cases for the problem.