Let $p(x)$ be a polynomial with integer coefficients such that $p(0) = 0$ and $0 \le  p(1) \le  10^7$. Suppose that there exist positive integers $a,b$ such that $p(a) = 1999$ and $p(b) = 2001$. Determine all possible values of $p(1)$.
 
(Note: $1999$ is a prime number.)

1. Given that \( p(0) = 0 \), we can write \( p(x) = xq(x) \) where \( q(x) \) is a polynomial with integer coefficients. This implies that \( p(a) = 1999 \) and \( p(b) = 2001 \) for some positive integers \( a \) and \( b \).

2. Since \( p(a) = 1999 \) and \( 1999 \) is a prime number, \( a \) must be a divisor of \( 1999 \). The possible values of \( a \) are \( 1 \) and \( 1999 \).

3. Similarly, since \( p(b) = 2001 \) and \( 2001 = 3 \times 23 \times 29 \), the possible values of \( b \) are \( 1, 3, 23, 29, 69, 87, 667, \) and \( 2001 \).

4. We also know that \( b - a \mid p(b) - p(a) \). Since \( p(b) - p(a) = 2001 - 1999 = 2 \), it follows that \( b - a \mid 2 \). Therefore, \( b - a \) can be \( -2, -1, 1, \) or \( 2 \).

5. Considering the possible values of \( a \) and \( b \) and the condition \( b - a \mid 2 \), we have the following pairs:
   - \( (a, b) = (1, 3) \)
   - \( (a, b) = (1999, 2001) \)

6. For the pair \( (a, b) = (1, 3) \):
   - Since \( p(1) = p(a) = 1999 \), we have \( p(1) = 1999 \).

7. For the pair \( (a, b) = (1999, 2001) \):
   - We know that \( p(x) - x \) has roots at \( 0, 1999, \) and \( 2001 \). Therefore, \( p(x) - x = x(x - 1999)(x - 2001)r(x) \) where \( r(x) \) is a polynomial with integer coefficients.
   - Evaluating at \( x = 1 \), we get:
     \[
     p(1) = 1 \cdot (1 - 1999) \cdot (1 - 2001) \cdot r(1) + 1 = (-1998)(-2000)r(1) + 1 = 3996000r(1) + 1
     \]
   - Given \( 0 \leq p(1) \leq 10^7 \), we solve for \( r(1) \):
     \[
     0 \leq 3996000r(1) + 1 \leq 10^7
     \]
     \[
     -1 \leq 3996000r(1) \leq 9999999
     \]
     \[
     0 \leq r(1) \leq \frac{9999999}{3996000} \approx 2.5
     \]
     Since \( r(1) \) is an integer, \( r(1) \) can be \( 0, 1, \) or \( 2 \).

8. Therefore, the possible values of \( p(1) \) are:
   - \( r(1) = 0 \): \( p(1) = 1 \)
   - \( r(1) = 1 \): \( p(1) = 3996000 \cdot 1 + 1 = 3996001 \)
   - \( r(1) = 2 \): \( p(1) = 3996000 \cdot 2 + 1 = 7992001 \)

9. Combining all possible values, we have \( p(1) = 1999, 1, 3996001, \) and \( 7992001 \).

The final answer is \( \boxed{1, 1999, 3996001, 7992001} \).