Problem
Write a Python program to address the following problem: Assume that you are climbing a staircase which takes n ≥ 1 steps to reach the top. You can climb 1 or 2 or 3 steps each time. The program should return how many different ways you can climb to the top. It is required that the time complexity of the implemented algorithm is linear, i.e., O(n).