If

is true, then

is false, which in turn means

is true.
If

is false, then

is true, and so

is false.
So, because

in both cases, the statement is a tautology (always true).
If you were to put this in a table, you would have one column each for

. In the first column (

) you can think of

as an independent variable that can only take two values, true and false. In the next column (

), you would negate the value in the previous column. And so on.
It should roughly look like this:
p ... ~p ... ~(~p)
T ... F ... T
F ... T ... F