Get_the_term_list inexplicably adds values in foreach

The problem lies with the get_the_term_list() function, which is defined with the following arguments:

get_the_term_list( $id = 0, $taxonomy, $before="", $sep = '', $after="" )

You’re defining the $before argument as true which PHP prints as 1 so that’s why it’s printing a 1 before the list. You should either remove the argument altogether:

get_the_term_list( $p, 'mountains' );

or replace it with a string:

get_the_term_list( $p, 'mountains', '<ul><li>', '</li><li>', '</li></ul>' );