If p=0 then q^4 - 16q - 1 = 0. This has no integer roots so p=0 is not a solution.

Then all solutions come in pairs, one with p>0 and one with 0>p. So it suffices to find all solutions with p>0 and negate to get the second member of the pair.

If q=0 then p^4=1 which gives p=1 and p=-1. Two solutions so far: (p,q) = (1,0) and (-1,0)

If q>p>0 then let q = p+n with n>0. Substituting this for q and simplifying yields:

(4n^2)*p^2 + (4n^3-16)*p + (n^4-16n-1) = 0.

If n>=3 then all the coefficients are positive and there will not be any positive roots. If n=2 then 16p^2 + 16p - 17 = 0, which does not have any positive integer roots. If n=1 then 4p^2 - 12p - 16 = 0, which has a positive integer root of p=4. This gives two more solutions of (4,5) and (-4,5).

Finally, if p>q>0 then let p = q+m with m>0. Substituting for p and simplifying yields:

(4n^2)q^2 + (4n^3-16)q + (n^4-1) = 0

If n>=2 then all the coefficients are positive and there will not be any positive roots. If n=1 then 4q^2 - 12q = 0, which has a positive integer root of q=3. This gives two more solutions of (4,3) and (-4,3).

The total solution set is (p,q) = (1,0), (-1,0), (4,3), (-4,3), (4,5), and (-4,5).