Generate a Python program that has the following intention:

The intention of the program is to create a function p1 that takes in three parameters: height, start, and end. The function generates a sequence of steps to move between height levels, starting from a value in the range of 1 to 3 (inclusive) and ending at a value in the range of 1 to 3 (inclusive). The function uses a recursive approach to generate the sequence of steps.

Here's a step-by-step explanation of the code:

1. The function checks if the height is less than or equal to 0. If it is, it returns an empty list, as there is no need to perform any steps.
2. If the height is greater than 0, the function first calculates the available steps by removing the start and end values, along with the already used helper value, from the set of possible steps (1, 2, 3). The popped value is used as the current helper.
3. The function then recursively calls itself with a reduced height value (height - 1), starting from the start value and using the current helper value. This generates a list of steps up to the helper value.
4. The function appends a step from the start value to the current helper value to the list of steps.
5. The function recursively calls itself again with a reduced height value (height - 1), starting from the current helper value and ending at the end value. This generates a list of steps from the helper value to the end value.
6. The function returns the combined list of steps.

The function p1 can be used to generate a sequence of steps for a given height, starting from a value in the range of 1 to 3, and ending at a value in the range of 1 to 3.